专利摘要:
フラッシュメモリデバイスの外部で実装されるデータスクランブリング手法を開示する。これは、フラッシュデバイスの内部で作用するフラッシュメモリオンチップコピー機能と協調的に使用できるため、高性能コピー操作をサポートする。ヘッダや制御構造等、フラッシュに記憶されるデータはすべてスクランブルできる。停電に耐えるうえ、データを逆スクランブルし再度スクランブルせずともフラッシュの内部でデータを再配置できる等、堅牢なファイルシステム操作を達成できる。ハードウェアに基づく典型的なソリューションの場合はシステム全体の性能におよぶ影響が皆無かごく僅かであり、非常に低い増分コストでシステム全体の信頼性を向上させることができる。このデータスクランブリング手法では、望ましくはシードスクランブル鍵の決定にあたって物理アドレスではなく、論理ブロックアドレスや論理ページアドレス等の論理アドレスを使用する。
公开号:JP2011508363A
申请号:JP2010540950
申请日:2008-12-31
公开日:2011-03-10
发明作者:エス. チョン,スティーブ;トライスター,シャイ;ティー. リン,ジェイソン
申请人:サンディスク コーポレイション;
IPC主号:G11C16-02
专利说明:

[0001] 本発明は、一般的にはフラッシュメモリ記憶システムに関し、より具体的には、フラッシュメモリに書き込まれるデータをスクランブルすることで、特定のデータパターンに左右される感受性と妨害効果の緩和に役立つシステムに関する。]
背景技術

[0002] 「フラッシュファイルシステム」はフラッシュメモリデバイスで磁気ディスクのようにデータを記憶し、操作するためのシステムである。フラッシュファイルシステムにより、アプリケーションやオペレーティングシステムは物理アドレスではなく論理アドレス(仮想アドレスと呼ばれることもある)を使ってフラッシュメモリデバイスとやり取りできる。ソフトウェアアプリケーションと物理的メモリシステムとの中間にあるソフトウェア層は、論理アドレスと物理アドレス間でマッピングを行う。いずれもその全体が本願明細書において参照により援用されている、Ban の米国特許第5,404,485号(特許文献1)、Ban の米国特許第5,937,425号(特許文献2)、ならびにLasserの米国特許第6,591,330号(特許文献3)には、論理−物理アドレスマッピングを実装するシステムが記載されている。]
[0003] NANDフラッシュメモリは本質的に特定のデータパターンの影響を受けやすい。例えば、同一ビット線上にある多数のセルを同じデータ状態までプログラムしたり、同一ワード線上にある多数のセルを同じデータ状態までプログラムしたりすると、プログラムディスターブ現象が起こり得るので、その結果セルの電荷配分が変化し、1つ以上のセルが別のデータ状態にずれるおそれがある。フラッシュメモリへ頻繁に書き込まれるビットパターンにおいて、特に制御ブロック等、フラッシュファイルシステム内の特定のブロックへ書き込まれるビットパターンでは、そのような一定の反復データパターンは珍しくない。このような制御ブロックは、例えば論理−物理アドレスのマッピング情報や種々のデータブロックに関する情報をファイルシステムで把握するために使われる。ときには数行のワード線を特定のデータ状態までプログラムする場合でさえ、このようなディスターブ現象が生じ得る。「マルチレベルセル」(MLC)アレイとも呼ばれる1セル当たり複数のビットを記憶するメモリアレイ(MBCアレイ)では特に、ディスターブ現象等の現象が問題となり、特定のユーザデータパターンに応じて1つ以上のセルで読み出しエラーが発生する可能性がある。その全体が本願明細書において参照により援用されているChenらの米国特許第7,023,739号(特許文献4)には、ある種のプログラムディスターブ現象が記載されている。]
[0004] この問題に対処するため、フラッシュデバイスへのプログラミングに先立ちシステムレベルでのデータスクランブリングもしくはランダム化により、ユーザデータブロックや制御ブロックで特に問題となりやすいデータパターンを解消する手法が考案されてきた。この場合のデータのスクランブリングやランダム化とは、メモリのビット線やワード線に沿ってメモリセル状態にかかわるビットパターンを分解することを意味する。しかし、NANDメモリの外部で実施されるデータスクランブリング手法では、フラッシュメモリのオンチップコピー操作やコピーバック操作と適合せず、しかるべきシステム性能を達成できなくなる。オンチップコピーはある程度まとまったデータに作用し、あるひとつの物理メモリ位置から別の物理メモリ位置にかけてデータを自律的に移動するものであり、オンチップコピー操作を使わない場合よりも性能が向上し消費電力が少なくすむ。オンチップコピー操作を使用しない場合は、データをデバイスから読み出し、コンパニオンデバイス(フラッシュコントローラデバイス等)へオフチップで伝送し、NANDメモリの異なる物理位置に再度書き込むことになる。しかし、物理メモリアドレスに基づきスクランブルされたデータに対してオンチップコピー操作を行うと、スクランブルされたデータに意図しない新たな鍵/シードが対応付けられ、当初のデータを取り戻すために、誤った新たな鍵/シードを使用してしまい、データを正しく逆スクランブルできなくなる。]
先行技術

[0005] 米国特許第5,404,485号
米国特許第5,937,425号
米国特許第6,591,330号
米国特許第7,023,739号
米国特許第5,434,825号
米国特許第6,522,580号
米国特許第7,139,864号
米国特許出願第11/808,905号]
[0006] 本発明から提供されるデータスクランブリング手法はフラッシュメモリデバイスの外部で実装され、フラッシュデバイスの内部で作用するフラッシュメモリオンチップコピー機能と協調的に使用できるため、高性能コピー操作をサポートする。現代のフラッシュメモリサブシステムの多くに採用されている「フラッシュファイルシステム」はガーベッジコレクション手法を多用し、オンチップコピー機能を大いに活用している。これらの手法を例えばハードウェアベースのソリューションとして実装すれば、システム全体の性能におよぶ影響は皆無かごく僅かであり、システム全体の信頼性を向上させる費用効果的なソリューションとなる。]
[0007] このデータスクランブリング手法では、望ましくはシードスクランブル鍵の決定にあたって物理ページアドレスではなく、論理ページアドレス等の論理アドレスを使用する。論理ページアドレスはデータの論理ブロックアドレスから決定されるため、メモリでスクランブルされるデータの物理的配置を制限しない。その結果、オンチップコピー操作を使用できる。オンチップコピー操作によってデータが再配置されてもデータの論理ページアドレスは変化しないから、データの逆スクランブルにあたっては同じシードスクランブル鍵を使用できる。ブロックの特定部分でユーザデータをスクランブルするには、このシードスクランブル鍵を使用する。しかし、1本のワード線にわたってさらなるデータが書き込まれ、ビット線に沿ってさらなるデータが書き込まれるときには、データ状態をあまねく「ランダム化」するためにスクランブル鍵が確定的に変更される。]
[0008] 常に停電に耐え、フラッシュメモリを再初期化し、そこに記憶された種々ブロックのマッピングを再現し、データを逆スクランブルして読み返し、データ種別とオンチップコピー操作によるデータ再配置を特定する等、本発明は堅牢なファイルシステム操作も提供する。ヘッダや制御構造等、フラッシュに記憶されるデータはすべてスクランブルできる。初期化のときにスクランブルされたデータからスクランブル鍵そのものを抽出できるようにするため、ページヘッダにはスクランブル鍵の情報を記憶できる。一部の実施形態では、初期化とデバッグ作業を支援するために異なるスクランブリング手法を用いて制御構造の中で情報をスクランブルする。]
[0009] ある実施形態では、XORロジックと確定的数のスクランブル鍵による単純な方法を用いてハードウェア、ファームウェア、またはソフトウェアにより効果的にデータのスクランブリングを果たすことができる。所定の初期スクランブル鍵シードをビット単位で循環させ、周回する一連のスクランブル鍵を作り、各々のスクランブル鍵には鍵番号を割り当てる。開始鍵番号(SKN)と呼ぶことができる、論理データグループに使用する最初のスクランブル鍵番号からスクランブル鍵(「スクランブラ鍵」)を導き出すことができる。]
[0010] SKNは論理グループメモリアドレスに関連付け、データのスクランブリングに使用できる。SKNそのものとその他のヘッダ(すなわち、オーバーヘッド)情報も、ユーザデータビットと同じ方法でスクランブルできる。いくつかの実施形態では、各メモリトランザクションが始まるときにフラッシュコントローラファームウェア(FW)かシステムホストソフトウェアでSKNを設定するだけでよい。トランザクション中は、さらなるデータグループの読み書きにともない後続のスクランブル鍵を自動的に生成するようにスクランブラを構成できる。]
[0011] スクランブル済みSKNビットとスクランブル済みユーザデータビットにはECC符号化を適用でき、フラッシュメモリに記憶できる。ECCの生成/訂正は、スクランブリング/逆スクランブリングの前でも後でもよい。ヘッダとデータ部分はスクランブルされるが、ECCのパリティバイトはスクランブルすることもでき、スクランブルしないでおくこともできる。]
[0012] いくつかの実施形態では、スクランブル鍵生成メカニズムとデータスクランブリング手法について予備知識を有するフラッシュコントローラファームウェアかシステムホストソフトウェアで(a)データスクランブラ動作を模倣でき、(b)所望のスクランブル済みSKNを論理アドレスに順方向マッピングする表(例えば、32項目)を効率的に作成でき(例えば、デフォルトシードを使用)、(c)論理アドレスから所望のスクランブル済みSKNへ逆方向マッピングする表を効率的に作成できる。]
[0013] 典型的なシステムはシステム初期化のときに以下のようにしてフラッシュメモリに記憶されたデータの種別と論理グループ位置を特定できる。(a)フラッシュコントローラファームウェア(FW)かシステムホストソフトウェアで所望のスクランブル済みSKNの順方向・逆方向マッピング表を生成し、(b)ハードウェアスクランブラを無効にし、各メモリブロックの最初のセクタをスキャンし、このメモリブロックに記憶された最初のスクランブル済みSKNを抽出し(例えば、各セクタの最初の数バイト内)、(c)抽出したスクランブル済みSKNを使用し、フラッシュコントローラファームウェアかシステムホストソフトウェアで逆方向マッピング表を調べてスクランブルがかかっていないSKNを確認し、(d)ハードウェアスクランブラを有効にし、最初のセクタを再び読み出し、スクランブルがかかっていないSKNを鍵として使用して逆スクランブルし(あるいはFWでSKNを使用し、ヘッダの逆スクランブルを実行し、データは読み出さない)、(e)メモリブロック種別を識別し、フラッシュコントローラRAMに記憶する。]
[0014] システム初期化の後には、フラッシュコントローラファームウェアかシステムホストソフトウェアで論理データグループを記憶する物理メモリ位置の割り当てを制御し、スクランブリングと逆スクランブリングの鍵/シードとして論理グループアドレスを使用し、所望のスクランブル済みSKNの順方向マッピング表を使用し、論理グループに関連するスクランブル済みSKNをフラッシュメモリに記憶できる。フラッシュコントローラファームウェアかシステムホストソフトウェアでは、ユーザデータビットを逆スクランブルするための鍵/シードとして論理グループアドレスを使用して読み出し操作を実行できる。論理セクタデータは、オンチップコピー操作によりフラッシュメモリ上で物理的に随時移動できる。オンチップコピーが行われるとコントローラがそれに気づき、データを再度マッピングする。]
[0015] 本発明は、一態様において、不揮発性メモリに情報を記憶する方法を提供し、この方法は、典型的な実施形態において、シード鍵とデータグループの論理ページアドレスとに基づき開始鍵を決定することと、開始鍵に対応する確定的鍵系列を用いてデータグループをランダム化することと、ランダム化されたデータグループを不揮発性メモリの物理ページに記憶することとを含む。]
[0016] 本発明は、別の態様において、不揮発性メモリに情報を記憶する方法を提供し、この方法は、典型的な実施形態において、メモリページの論理ブロックアドレスを用いてページオフセット数を決定することと、シード鍵とページオフセット数とに基づき開始鍵を決定することと、開始鍵に対応する確定的スクランブル鍵系列を用いてページデータをスクランブルすることと、ページオフセット数に対応する識別子を不揮発性メモリの物理ページのヘッダに記憶することと、スクランブルされたページデータを物理ページに記憶することとを含む。]
[0017] 本発明は、別の態様において、装置を提供し、この装置は、典型的な実施形態において、不揮発性メモリとメモリコントローラとを備え、このメモリコントローラは、シード鍵とデータグループの論理ページアドレスとに基づき開始鍵を決定し、開始鍵に対応する確定的鍵系列を用いてデータグループをランダム化し、かつランダム化されたデータグループを不揮発性メモリの物理ページに記憶するように構成される。]
[0018] 本発明の方法を、ソフトウェアにより、ハードウェアにより、あるいは双方の組み合わせにより実装することができる。かかるソフトウェアは、データを読み書きするホストコンピュータ上で実行するソフトウェアであることができ(例えば、記憶デバイスをサポートするソフトウェアデバイスドライバ内)、あるいはホストコンピュータとやり取りしメモリ媒体を制御するメモリコントローラの中で実行するファームウェアであることができる。かかるハードウェアを、メモリコントローラの中かメモリ媒体の中で実装することができ、メモリコントローラとメモリ媒体が2つの別々のダイ上にあるか、共通のダイ上にあるかは問わない。前述した構成と変形例はどれも本発明の範囲内にある。]
[0019] 本発明は特許請求の範囲によって規定され、前述した概要は本発明の紹介を助けるものであり、限定するものとして解釈すべきではない。また、ここで説明する発明概念と実施形態は単独での使用と様々な組み合わせでの使用が具体的に考えられる。したがって、ここで説明しない他の実施形態、変形例、改良が必ずしも本発明の範囲から除外されるわけではない。]
[0020] 添付の図面を参照することにより本発明をより良く理解でき、当業者にとっては本発明の数ある目的、特徴、利点が明らかになるはずである。]
図面の簡単な説明

[0021] 先行技術と標示された、NANDメモリアレイの回路図である。
1セル当たり単一ビットのメモリと1セル当たり複数ビットのメモリとにプログラムされるメモリ状態を示す図である。
1セル当たり単一ビットのメモリと1セル当たり複数ビットのメモリとにプログラムされるメモリ状態を示す図である。
1セル当たり単一ビットのメモリと1セル当たり複数ビットのメモリとにプログラムされるメモリ状態を示す図である。
図3Aは本発明によるスクランブラブロックを概念的に示す図であり、図3Bは本発明による逆スクランブラブロックを概念的に示す図である。
典型的な8ビットスクランブル鍵系列の図である。
典型的な32ビットスクランブル鍵系列を示す表である。
異なるページのワードごとにかつ異なるページごとに使用するスクランブル鍵が異なることを示す図である。
スクランブル鍵の中途にセクタ境界が位置する状態を示す図である。
物理ページ内の16セクタに該当する数通りのスクランブリングパラメータの典型的な値を示す表である。
別の典型的な8ビットスクランブル鍵系列の図である。
スクランブル鍵の中途にセクタ境界が位置する状態を示す別の図である。
物理ページ内の4ECCページに該当する数通りのスクランブリングパラメータの典型的な値を示す表である。
物理ページ内の4 ECCページと32の各物理ページにつき典型的なSKN値を示す表である。
単一セクタECCページの場合の典型的なヘッダ形式を示す図である。
2KバイトECCページの場合の別の典型的なヘッダ形式を示す図である。
本発明の実施形態による典型的なページマッピング表である。
本発明の実施形態による典型的なSKN表である。
本発明の実施形態によるスクランブラの典型的な動作のフローチャートである。
本発明の実施形態による典型的なスクランブラブロックの図である。
スクランブルがかかっていない反復0xFFデータパターンのメモリセル状態を示す表である。
本発明の実施形態によるスクランブリングの後、図19の内容に対応するスクランブル済みデータのメモリセル状態を示す表である。] 図19 図3A 図3B
実施例

[0022] 図1を参照すると、典型的なNANDメモリアレイ100の一部分を表す回路図が見られる。図に示された部分は、メモリセルプレーンが1つしかない二次元アレイを表す。あるいは、2つ以上のメモリセルプレーンを上下に積み重ねた三次元メモリアレイの1レベルを表す。その典型的なNANDストリング102は、32本のワード線111(WL0、WL1・・・WL30、WL31と標示)のいずれか1本によってそれぞれゲート制御される32個の直列メモリセルトランジスタを含む。NANDストリング102はまた、ノード113上に伝達されるブロック選択信号BS0に従いNANDストリングの一端をビット線103へ結合するブロック選択デバイス114を含み、さらに、ノード115上に伝達されるブロック選択信号BS1に従いNANDストリングの他端を共有バイアスノード101へ結合する第2のブロック選択デバイス116を含む。] 図1
[0023] それぞれのNANDストリング102、104、106はメモリアレイの中の同一ブロック124内に配置され、それぞれのビット線103、105、107へ結合されている。NANDストリングのメモリセル(ワード線のいずれか1本によりゲート制御されるメモリセル)には通常、フローティングゲート構造が採用されるか、あるいはゲートと下位チャネルとの間に電荷記憶誘電体層を採用することができ、メモリセルデバイスのしきい値電圧はプログラミングと消去によって変化させることができる。種々のブロック選択デバイス(114、116等)は一般的に、通常のMOSデバイス(すなわち、プログラム不能)であるが、ある種のメモリ技術ではメモリセルデバイスと同様に製造することもできる。この典型的なNANDアレイ100のNANDブロックには32本のワード線が見られ、16、64、88本等、ワード線の数は1ブロック当たり32本以外でも可能であるが、2の整数倍に等しい数が典型的に実装される。]
[0024] 典型的なNANDメモリセルアレイを、それぞれのビット線とワード線との交差点によって表わされるメモリセルを有するように一般化することができる。従来、各メモリセルに1ビットの情報を記憶し、2通りのメモリセル状態をサポートすることによって実現される。ひとつは論理「0」に相当する状態であり、もうひとつは論理「1」に相当する状態である。多くの場合は、セルのチャネル(セルのトランジスタのソースエレメントとドレインエレメントとを結ぶ部分)上にフローティングゲートを設け、さらにこのフローティングゲートの中に記憶される電荷の量に2つの有効状態を対応させることにより、2つの状態を実装することができる。通常、一方の状態でフローティングゲートの電荷はゼロで、消去後の書き込みがなされていないセルの初期状態であり(通常は状態「1」と定義される)、他方の状態ではある程度の負電荷がフローティングゲートにある(通常は状態「0」と定義される)。ゲートに負電荷があるとセルのトランジスタのしきい値電圧(すなわち、トランジスタを導通させるためにトランジスタのコントロールゲートに印加すべき電圧)が増加する。セルのしきい値電圧をチェックすることにより、記憶されたビットを読み出すことができる。しきい値電圧が高い状態にある場合、ビット値は「0」であり、しきい値電圧が低い状態にある場合、ビット値は「1」である。]
[0025] 実際にはセルのしきい値電圧を正確に読み出す必要はなく、セルが現在2つの状態のどちらにあるかを正確に識別するだけでよい。それには、2つの状態の中間にあたる基準電圧値に照らして比較を行い、セルのしきい値電圧がこの基準値より低いか高いかを判断すればよい。]
[0026] 図2Aはこれを示すものである。具体的には、図2Aは、多数のセルのしきい値電圧分布を示している。フラッシュデバイスの中にあるセルの特性や挙動はまったく同じというわけではないため(例えば、不純物濃度の僅かなばらつきやシリコン構造の欠陥のため)、全てのセルに対して同じプログラミング操作を行っても、全てのセルでしきい値電圧がまったく同じになることはない。(歴史的理由により、フラッシュメモリにデータを書き込むことを一般的にはフラッシュメモリを「プログラムする」と言うことに留意すべきである。)むしろしきい値電圧は分布する。値「1」を記憶するセルは負のしきい値電圧を通常持ち、ほとんどのセルは左側のピーク120に見られる値に近いしきい値電圧になるが、少数のセルではこれよりも低いか高いしきい値電圧になる。同様に、値「0」を記憶するセルは正のしきい値電圧を通常持ち、ほとんどのセルは右側のピーク122に見られる値に近いしきい値電圧になるが、少数のセルではこれよりも低いか高いしきい値電圧になる。] 図2A
[0027] 一般的に「マルチレベルセル」、略して「MLC」と呼ばれる手法を用いて2ビット以上の情報を記憶するメモリセルが普及しつつある。しかし、前述したように、旧式のフラッシュセルでも2レベルを有し、2レベル以上になるから、この呼び方は誤解を招く。そこで本願明細書では2種類のフラッシュセルを「シングルビットセル」(SBC)と「マルチビットセル」(MBC)と呼ぶことにする。MBCフラッシュによる進歩として、各セルには2ビット(以上)が記憶される。ここでは説明を簡潔にするために2ビットの場合を強調するが、フラッシュメモリデバイスでサポートする1セル当たりのビット数がいくつであれ、本発明を等しく応用できることを理解できるはずである。1つのメモリセルで2ビットの情報を記憶するには、4通りの異なった状態のいずれか1つにメモリセルをプログラムできなければならない。セルの「状態」はセルのしきい値電圧によって表されるため、MBCセルでは当然、4通りの異なった有効しきい値電圧範囲をサポートしなければならない。図2Bは、典型的なMBCセルの典型的なしきい値電圧分布の例を示す。図2Bには、図に示すように4つのピーク130、132、134、136があり、各ピークはいずれか1つの状態に相当する。SBCと同様に、それぞれの状態は実際には範囲であって単一の数値ではない。セルの内容を読み出すときには、セルのしきい値電圧がどの範囲内にあるかを正確に識別できさえすればよい。その全体が本願明細書において参照により援用されているHarariの米国特許第5,434,825号(特許文献5)には、MBCフラッシュデバイスの一実施例が記載されている。] 図2B
[0028] MBCセルで2つのビットを4つの状態で符号化する場合は普通、両ビットが値「1」を持つ場合を左端の状態、すなわちピーク130(通常は負のしきい値電圧を有する)とする。以降の説明では以下のような表記を用いる。セルの2つのビットは「下位ビット」と「上位ビット」と呼ぶ。これらのビットの明示値を[「上位ビット」「下位ビット」]の形式で記述し、右側を下位ビット値とする。したがって、下位ビットが「0」で上位ビットが「1」の場合は「10」と記述する。この用語・表記の選択が恣意的であって、これとは別の名称・符号化も可能であることを理解するべきである。この表記により、左端の状態は「11」の場合に相当する。残りの3つの状態は通常、左から右の順に「10」、「00」、「01」と割り当てられる。その全体が本願明細書において参照により援用されているChenの米国特許第6,522,580号(特許文献6)には、かかる符号化を用いたMBCNANDフラッシュデバイスの一実施例が記載されている。特に特許文献6の図8を参照されたい。4つの状態は単純にE、A、B、およびCと呼ぶこともできる。しかし、この状態割り当てに限定されるわけではなく、これとは別の順序も可能であることに留意すべきである。MBCセルの内容を読み出すときには、セルのしきい値電圧がどの範囲内にあるかを正確に識別しなければならない。しかし、この場合は、1つの基準電圧に対する比較でこれを果たすことはできず、数回の比較が必要となることがある。] 図8
[0029] 図2Cには別の状態割り当てが描かれている。これはLMモードと呼ばれることがある。このモードには記憶状態「11」、「01」、「00」、「10」にそれぞれ対応する4つのピーク140、142、144、146(左から右の順)がある。これらの4状態も単純にE、A、B、およびCと呼ぶことができる。通常は下位ページが先にプログラムされ、「0」がプログラムされる場合、ピーク148と標示された中間LM状態になる。上位ページをプログラムするときに上位ビットが「0」ならば、E状態140がA状態142までプログラムされるか、LM状態148がB状態144までプログラムされる。上位ビットが「1」ならば、LM状態148がC状態146までプログラムされる。] 図2C
[0030] このLMモードには従来のモードを凌ぐ利点がいくつかある。第一に、LMモードのプログラミング時間は従来モードより短く、プログラミングのストレスを減らすことができるため(例えば、従来モードでE状態130からC状態136までメモリセルをプログラムするにはメモリセルのしきい値電圧をシフトするのに時間がかかり、その間ずっと近傍のセルにストレスを与えることになるが、LMモードのしきい値シフトは小さい)、プログラムディスターブは減り、信頼性が向上する。加えて、下位ページのみ使用する場合、E状態140と中間LM状態148との離隔は、従来モードのE状態130とA状態132との離隔より大きいため、メモリセルで信号マージンが大きくなる。最後に、ピーク148の幅は従来モードのピーク132の幅より広くとれるため、最終的なしきい値を従来モードのように厳密にコントロールする必要がなく、下位ページのプログラミングを迅速化できる。]
[0031] サイズが同様のセルに1ビットではなく2ビットを記憶するMBCデバイスは、コスト面で大変有利である。しかし、MBCフラッシュにもいくつかの欠点はある。MBCメモリの平均読み出し時間および書き込み時間はSBCメモリより長く、性能低下を招く。また、MBCはSBCより信頼性が低い。これは容易く理解できる。MBCではしきい値電圧範囲の差がSBCより格段に小さくなるからである。そのため、しきい値電圧に外乱が生じる場合(記憶電荷の漏れによるしきい値電圧のドリフト、近傍セルにおける操作から生じる干渉等)、2状態の格差が大きいSBCでは問題にはならないが、MBCではセルの状態が変わってしまってビットに誤りが生じることがある。このため、データ保持時間や多数の書き込み/消去サイクルに対するデバイス耐久性の点でMBCセルの品質水準は低い。用途次第では、MBCセルとSBCセルの両方を使用すると有利な場合もある。]
[0032] 前述した説明はフローティングゲート式のフラッシュメモリセルに関するものだが、これとはタイプの異なるフラッシュメモリ技術もある。例えば、NROMフラッシュメモリ技術には導電性フローティングゲートがなく、絶縁層で電荷をトラップする。ここではフローティングゲート技術の脈絡で説明するが、本発明はあらゆるタイプのフラッシュメモリに等しく応用できる。]
[0033] プログラムディスターブ
フラッシュメモリデバイスのエラーにはいくつか原因がある。具体的な原因として「プログラムディスターブ」、略して「PD」と通常呼ばれるものがある。PD現象が起こると、書き込まれるはずのないセルが当初の左端の状態から他の何らかの状態まで意図せず移ってしまう(ここでの説明では図2A、2B、2Cにも使われている一般的なしきい値電圧軸の描き方を前提とし、値は軸の左方向に沿って低くなる。これは恣意的なやり方であって、本発明の範囲を限定するものとして解釈すべきではない)。図2Cの1セル当たり2ビットの例を参照するならば、ビット値「11」に相当する左端の状態(セルの消去済み状態)にあって本来その状態にとどまるはずのセルが、左端の次の状態「10」へ移ってしまい、セルに記憶される2ビット中1ビットは誤りとなる。場合によっては、1セル当たり3ビット以上を記憶し5つ以上の状態を持つセルでは特に、PD現象の結果として左端の状態から直近の状態へ移動するばかりでなく、左端の状態からさらに離れた状態まで移動することもある。左端以外の状態から右の(しきい値電圧が高い)状態に移動することすらある。しかし、最初に述べた、左端の状態から直近の近傍状態へ移動する場合が最も一般的であり、ここでの実施例と説明にもこの場合を前提とし、本発明の方法の普遍性を制限することはしない。] 図2A 図2C
[0034] ページをプログラムするときにNANDフラッシュデバイスのセルに印加される電圧を考えれば、PD現象の原因は容易く理解できる。1ページのセルをプログラムするときには当該ページのセルのコントロールゲートへ接続されたワード線に比較的高い電圧が印加される。このコントロールゲート電圧の結果としてセルのしきい値電圧が増加するか否かは、そのセルへ接続されたビット線に印加される電圧によって決まる。データが書き込まれないセルのビット線は比較的高い電圧レベルへ接続され、セルの電圧差は最小限に抑えられる。書き込みが行われるセルのビット線は低い電圧へ接続され、セルの電圧差は大きくなり、その結果、セルのしきい値電圧は増加し、セルは図2Cの電圧軸に沿って右へ移動し、セルの状態が変化する。] 図2C
[0035] しかし、書き込みが行われないセルの電圧差が、書き込みが行われるセルより低くとも、ある程度の電圧差はある。プログラムされないこれらのセルの電圧差をさらに減らすため、選択されたワード線に印加されるプログラミング電圧に近い電圧までセルのチャネルが「ブーストされる」ことで、メモリセルデバイスの電圧差を減らす。それには、書き込みが行われないセルに対応する、「比較的高い」ビット線電圧に近い中間の電圧まで、メモリブロックの中で選択されていない他のワード線にバイアスをかける。その結果、これらのセルのチャネルにより高い電圧までバイアスがかかり、選択されたワード線に高プログラミング電圧がかかると、さらに高い電圧までブーストされる。しかし、選択されたワード線に沿ってプログラムされるセルの電荷によって、選択されていないワード線に印加される電圧は部分的に打ち消される。全体的ブーストは、同一ビット線沿いの前のセルにプログラムされるデータ(すなわち、記憶状態)に左右される。例えば、「C」状態(メモリセルに記憶される最大電荷)までプログラムされるセルは、メモリセルデバイスで最も高いしきい値電圧を持つ。ビット線沿いの他のセルが以前「C」状態までプログラムされていた場合、ブーストされる電圧が減り、書き込み対象でないメモリデバイスで電圧が増加し、意図せぬプログラミングが発生する。]
[0036] 加えて、書き込み対象ページに高しきい値電圧(例えば、右端の状態等)まで書き込まれるセルがあると、プログラムされないセルの電圧差が高くなる。なぜならば、ページの全てのセルの全てのコントロールゲートには同じ電圧が印加されるが、到達すべきしきい値電圧が高ければ高いほど、その電圧は高くなるからである。つまり、一部のセルに高いコントロールゲート(すなわち、ワード線)電圧を印加する必要があるため、プログラムされないセルの電圧差は高くなる。そのような予想される電圧差の影響を受けないようにセルが設計されても、実際のNANDフラッシュデバイスでは、かかる電圧差によってセルにストレスがかかり、意図しないかまたは望んでもいないのに、一部のセルで状態が変化することがある。]
[0037] 前述した説明を要約すると、PDとは1ページのセルをプログラムするときに現在の記憶状態にとどまるべき一部のセルが別の状態に変化し、当該セルの読み出し時にビットエラーを生じさせる現象といえる。残念ながら、通常、実際のユーザデータはランダムではない。実際のユーザファイルを測定してみると、種々のセル状態の発生確率が等しくないことが分かる。書き込みが行われないセルのデフォルト値は左端の状態だから、最も頻発するのはこの状態である。これは容易く理解できる。ファイルの中で使われない初期化されないメモリ部分は大概、消去済み状態のセルと一致する。]
[0038] 実際の使用では、ランダムデータパターンの統計計算に基づく見込みよりもPDエラーの問題は深刻である。比較的多くのセルが消去済み状態となるが、これが最もPDエラーを被りやすい状態なので、実際にはランダムデータ分布モデルによる予測よりも多くのPDエラーが起こる。本発明は、ユーザデータを操作し、フラッシュにプログラムされる状態もしくは一連の電圧レベルをランダム化することにより、PD現象に起因するエラーの縮減に対処するものである。]
[0039] NANDフラッシュコンセプトの紹介
残りの説明をより良く理解するため、典型的なNANDフラッシュメモリデバイスとフラッシュファイルシステムのコンセプトと構造をこれより紹介する。
ブロックは、NANDフラッシュメモリで1つの単位として消去できる最小領域である。図1を参照すると、ブロックには、1対のブロック選択トランジスタによって選択されるワード線(ブロック選択線に挟まれたワード線)とビット線があり、ビット線のメモリセルは物理ワード線に結合されるメモリセルを含む。物理ページは、NANDフラッシュメモリで1つの単位として書き込める(すなわち、プログラムできる)最小領域である。図1を参照すると、1つの物理ページが1本のワード線沿いの全メモリセルを含むことができ、複数の物理ページが1本のワード線のメモリセルに相当することができる。例えば、MBCメモリでは、1本のワード線が下位ページと上位ページを含むほか、偶数ビット線に相当する下位・上位ページと奇数ビット線に相当する下位・上位ページとで、各物理ワード線につき全部で4つの物理ページを含むことができる。メタページとは、1つ以上の物理ページをつないでより大きなページを形成したものである。メタページ内の全物理ページを同時に読み出す/書き込むことで高性能化を達成する。] 図1
[0040] ECCページは1群のECC冗長バイトによって保護される1つ以上のセクタを含む。例えば、シングルセクタECCページの場合は各セクタがそれぞれのECC冗長バイトによって保護されるが、512バイトのセクタが4つあるECCページの場合は、それぞれ2KBのデータ情報が1群のECC冗長バイトによって保護される。ECCページは、データのほかに数バイト(2、6、14バイト等)のヘッダを含む。]
[0041] 論理アドレス空間(ホスト等の論理アドレス空間)は、サイズが等しい論理セクタグループに分割される。それぞれの論理グループにはメタブロックに適合する数のセクタがある。メタブロックは1単位として消去できる物理セクタグループで、論理データグループの記憶に使用できる。ホストデータを記憶するデータセクタと、ファームウェアデータを記憶する制御セクタという2種類のセクタは、いずれもメタブロックに記憶される。制御セクタは通常、ホストによってアクセスされない。所定の時間、所定のメタページは通常、データセクタか制御セクタだけを収容する。(しかし、スクラッチパッドブロック等は両タイプのセクタを収容することがある。)]
[0042] ホストの論理アドレスをフラッシュメモリの物理アドレスに関係づけるため、論理アドレスから物理アドレスへの変換を行う。論理グループで最も低い論理セクタアドレス(すなわち、LBA)が、マッピングするメタブロックの最初のセクタになるとは限らない。換言すると、論理グループの最低アドレスとマッピングするメタブロックの最低アドレスとの間にはオフセットが存在することがあり得る。メタブロックの最初の物理セクタに記憶されたデータの開始論理セクタアドレスを識別する等、オフセットの識別にあたってはページタグを使用する。]
[0043] メモリ管理システムは、論理グループの更新データを記録する専用のメタブロックを配置することによってデータの論理グループの更新が可能になる。ホストが論理グループでデータの書き込みを開始すると、アップデートブロックが開く。アップデートメタブロックは、更新データを受信の順に記録するが、記録が当初の正しい論理順序になっているか(連続)いないか(不連続)はかまわない。当初そのようなアップデートブロックはシーケンシャルなアップデートブロックとして開くが、不連続な書き込みがある場合には不連続な(すなわち、「カオス的」)アップデートブロックに変わる。最終的にアップデートメタブロックはさらなる記録のために閉じられる。数通りあるプロセスのいずれか1つが行われるが、最終的には正しい順序で完全に満たされたメタブロックとなり、当初のメタブロックはこれに差し替えられる。カオス的な場合には、頻繁な更新の助けになるように不揮発性メモリでディレクトリデータが管理される。]
[0044] 論理セクタグループのデータは、望ましくは論理的に連続する順序で1つのメタブロックに記憶される。この方法で、記憶された論理セクタのインデックスを予め設定しておく。メタブロックが論理グループの全セクタを所定の順序に並んでいる状態で用意しているとき、その状態を「インタクト」という。アップデートブロックに関して、最終的に論理的に連続する順序により更新データで満たされたとき、更新済みインタクトメタブロックとなり、当初のメタブロックと差し替えることができる。一方、更新データの順序がインタクトブロックの順序とは論理的に異なるアップデートブロックは不連続(すなわち、「カオス的」)アップデートブロックであり、順序が乱れているセグメントをさらに処理し、最終的にはインタクトブロックと同じ順序で論理グループの更新データが記憶されなければならない。好適な場合のものは1つのメタブロック内で論理的に連続する順序である。さらなる処理として、アップデートブロックの更新済みセクタと当初のブロックの変更されていないセクタを整理し、別のアップデートメタブロックにまとめる。できあがったアップデートブロックは論理的に連続する順序となり、当初のブロックと差し替えることができる。所定の条件下では、この整理統合プロセスの前に1つ以上の圧縮プロセスを行う。圧縮プロセスでは、同一論理セクタの更新によって用済みとなった重複論理セクタを排除しながらカオス的アップデートブロックのセクタを別のカオス的アップデートブロックに記録する。]
[0045] 論理グループと物理グループ(メタブロック)とのマッピングは1組の表とリストに記憶され、不揮発性フラッシュメモリとフラッシュコントローラ内のRAMに配布される。フラッシュメモリでは、メモリシステム内の各論理グループにつきメタブロックアドレスを含むアドレス表を管理する。加えて、最近書き込まれたセクタの論理−物理アドレス記録が一時的にRAMに保持される。これらの揮発性記録は、電源投入後にシステムが初期化されるときにブロックリストとデータセクタヘッダから再現できる。論理グループのアドレス記録階層は、オープンアップデートブロックリストと、RAM内のクローズドアップデートブロックリストと、フラッシュメモリに保管されるグループアドレス表(GAT)を含む。]
[0046] オープンアップデートブロックリストは、更新されたホストセクタデータを書き込むために現在開いているデータのアップデートブロックのリストであり、コントローラRAMの中にある。ブロックが閉じられると、そのブロックの項目はクローズドアップデートブロックリストに移される。クローズドアップデートブロックリストは、閉じられたデータアップデートブロックのリストで、コントローラRAMの中にある。このリストに含まれる項目の一部は、制御書き込み操作のときにグループアドレス表内のセクタへ移される。]
[0047] グループアドレス表(GAT)はメモリシステム内のホストデータの全論理グループのメタブロックアドレスのリストである。GATの中では各論理グループにつき1項目ずつが論理アドレスの順に並んでいる。GATの中でn番目の項目にはアドレス「n」を持つ論理グループのメタブロックアドレスが含まれる。これは望ましくは1組のセクタ(GATセクタと呼ぶ)からなるフラッシュメモリ内の表で、メモリシステム内の全論理グループのメタブロックアドレスを定義する項目を含む。GATセクタはフラッシュメモリ内の1つ以上の専用制御ブロック(GATブロックと呼ぶ)に位置する。
その全体が本願明細書において参照により援用されているBennettらの米国特許第7,139,864号(特許文献7)には、そのようなフラッシュファイルシステムのコンセプトがより詳しく記載されている。]
[0048] スクランブリング
メモリセルアレイに記憶されるデータは、論理的な観点から、ビット線を一方の軸としワード線を他方の軸とする二次元(2D)ビットマップとして表すことができる。これを踏まえ、効果的なデータパターンスクランブリングとは基本的に以下の2つを達成するものである。(1)データビットを適切に操作し、メモリセル状態のプログラムパターンに変化を与え、(2)ワード線からワード線、およびビット線からビット線に同じ状態にプログラムされたメモリセルの配置を最小限に抑える。]
[0049] 図3Aおよび3Bでは、ここで単にスクランブラと呼ぶこともある、典型的なデータパターンスクランブラ150と逆スクランブラ170の概念ブロック図を示している。かかるスクランブラは、排他的OR(XOR)ロジックと既知の鍵とを使用する簡素な暗号化法に基づく。簡素なXORロジックに鍵を用いてデータをスクランブルし、その後同じ鍵を用いた逆スクランブルにより当初のデータを取り戻す。図3Aでは、スクランブルがかかっていないデータがホストからバス152上でXORブロック156へ伝送される。加えて、バス154沿いにスクランブル鍵がXORブロック156まで伝送され、このブロックがビット単位のXOR操作を実行することによってデータはスクランブルされ、バス158沿いに伝送される。鍵ジェネレータ168はクロック信号160を受信し、バス162上でシード鍵を受信し、バス164上で開始鍵番号SKN(後述)を受信し、バス154上でスクランブル鍵を生成する。図3Bではスクランブルされたデータがメモリからバス172上でXORブロック176まで伝送され、このブロックがビット単位のXOR操作を実行することによってデータのスクランブルが解かれ、バス178上で伝送される。前述したものと同様に、鍵ジェネレータ188はクロック信号180を受信し、バス182上でシード鍵を受信し、バス184上で開始鍵番号SKNを受信し、バス154上で逆スクランブル鍵を生成する。XORブロックと鍵ジェネレータブロックは別々のブロックとして図に示されているが、種々の入力および出力バスを適宜操作しながらスクランブリングと逆スクランブリングの両方に共用することもできる。ホストデータとスクランブル鍵とのビット単位XOR操作は、スクランブルに使用した既知のシードと鍵番号による簡素な逆スクランブリングを可能にする。] 図3A 図3B
[0050] つまり、スクランブラ150と逆スクランブラ170の核心は、基本的には鍵を生成することにある。鍵を数字とみなす代わりに、1と0からなる列と見ることもできる。ビット順序と列に含まれる数1および0を制御することが適切なスクランブル鍵を生成する基本原則のひとつである。]
[0051] ビット列は、シードと呼ばれる初期ビット列を、ビットパターンの繰り返しが始まるまで、一度に1ビットずつ、循環させることにより、簡単に生成できる。それには、固定された長さのシフトレジスタを使って一連の循環する鍵を作ればよく、鍵値は最初のシード値によって制御される。例えば、8ビットシフトレジスタならば、最高8つの一意な鍵を生成できる。図4には典型的な循環8ビット鍵(左方向)が見られる。この例で、Key0の後にはKey1が続き、Key1の後にはKey2が続く。無論、初期ビット列を右に循環させて一連の循環する鍵を生成することもできる。いくつかの実施形態ではシリアルシフタを使用するが、実施形態によってはバレルシフタ等、他のシフタを使用することもある。] 図4
[0052] 図5を参照すると、左へ循環して32通りのスクランブル鍵を生成する典型的な循環32ビット鍵が見られる。初期鍵(Key0)は、0x695334C6というシード鍵値を取る。これとは別のシード鍵も考えられ、実験的に求めることができる。シード鍵は、望ましくはビットパターンに十分な「ランダム性」を与え、かつ望ましくは1と0とで数のバランスをとる。それぞれの連続鍵は、先行鍵を1ビット左へ循環させることによって生成される。例えば、Key1はKey0を1ビット左にずらすことによって生成される。表に見られるように、32通りの鍵には番号も振られており、鍵番号は、シード鍵がその鍵番号に等しいビット数により循環されることを意味する。例えば、Key21は、シード鍵Key0を21ビット左へ循環させたものである。この鍵は、シード鍵を1ビットずつ21回循環させることにより(例えば、1クロック当たり1回)、あるいはバレルシフタを用いて1回のクロックサイクルで、あるいはその他の手法により生成できる。] 図5
[0053] ある実施形態では、初期シード鍵を一度に1ビットずつ循環させて連続するスクランブル鍵を作る。シードは、望ましくは最低でも32ビットの長さがあり(しかし、これ以外の長さでもかまわない)、かつ望ましくは所定のハードウェアデフォルト値を持ち、このデフォルト値は初期化のときにファームウェア(FW)により変更できる(後ほど詳述)。スクランブル鍵により32ビットのデータをXORにかけ、その後次の鍵が自動的に生成され(例えば、現在の鍵を左へ循環させることにより次の鍵を作る)、次の32ビットデータに使われる。シードは初期鍵であり、後続の鍵はサイクルのたびに自動的に生成されるため(例えば、図3Aおよび3Bに見られるCLK信号の切り替えにより)、シードだけはFWにより設定する必要がある。] 図3A
[0054] 鍵はデータチャンク(32ビットのデータ等)により論理的にXORされ、したがって鍵内の1と0の数によりデータビットが切り替わることでワード線にわたってメモリセル状態がスクランブルされる。メモリページの先頭から128バイト(32鍵×32ビット÷8ビット/バイト)後に鍵番号は折り返して元に戻り、スクランブリングパターンそのものが繰り返される。メモリブロック200のメモリページ208、216、224等を示す図6にはこれが視覚的に描かれている。最初のメモリページ208の最初の32ビットワード(202と標示)はKey0を使ってスクランブルする。ページ208でさらなるワードが書き込まれるにつれ鍵番号は図に示されたように増加し、32番目のワード(204と標示)はKey31を使ってスクランブルする。ページ内の32ワードにつき32の鍵を再使用するから、次に書き込まれるワード(206と標示)はKey0を使ってスクランブルされる。スクランブラの目的はデータを暗号化することではなく固定パターンを回避することにあるので、ワード線沿いに(ビット線を横切って)メモリセルの状態を分散させるにあたって、128バイト後の鍵の再使用で「ランダム性」は十分である。しかし、これとは別の、後述するさらに「ランダム」なランダム化手法を用いることもできる。] 図6
[0055] ビット線の方向にメモリセルの状態を分散させるため、各ページの始めには異なる鍵を使用する。次のメモリページ216の最初の32ビットワード(210と標示)はKey1を使ってスクランブルする。ページ216でさらなるワードが書き込まれる(あるいは読み出される)につれて、鍵番号は前述したように増加し、31番目のワード(212と標示)はKey31を使ってスクランブルし、32番目のワード(214と標示)はKey0を使ってスクランブルする。前述したように、ページ内の32ワードにつき32通りの鍵を再使用するから、次のワード215はKey1を使ってスクランブルされる。]
[0056] それぞれのページに使用する最初の鍵の識別は開始鍵番号(SKN)によって提供される。SKNは、一定の基準点(Key0、シード)からのインデックスまたはオフセットとして機能する。このインデックスが論理ページの遷移のたびに変更されることで、循環鍵のビット列から階段状のビットパターンが作られる。このような論理ページアドレス遷移は、ある1つのワード線から次のワード線へ遷移するときに起こるほか、1本のワード線の中で起こることもある(ワード線のメモリセルに上位ページと下位ページが記憶されるMLCセルの場合、ワード線のメモリセル数がページ内のビット数より多い場合等)。開始鍵をオフセットすることにより、0と1が移動するビットマップのようなパターンになり、データのXOR化により、メモリセルアレイにわたってストライピング効果が得られる。つまりスクランブル鍵はビットを切り替える働きをする。鍵の循環は、ワード線にわたって(ページにわたって)ビットパターンをずらす働きをする。開始鍵番号は、該当するページに応じて適切な鍵を設定しながら、ビット線の方向にビットパターンをずらす働きをする。]
[0057] ページ内の所与のバイト(ワード線沿い)にどの鍵を使用するかの判断を助けるため、ページの最初のワードから始まって0〜31までカウントし、後続の32ワードごとに反復するDワードオフセット数を導入する。換言すると、Dワードオフセット数は0〜31までのカウントを繰り返し、ページ内の最初の鍵(ページ208ではKey0、他のページ216、224等では別の初期鍵)を基準にして使用すべき鍵を指示する。このDワードオフセット数は、物理ページの中でアクセスされる最初のセクタのカラムオフセットから導出され、以下の式により計算できる。

Column_Startは物理ページ内で読み出すか書き込みが始まる最初のデータバイトであり、データバイトとヘッダを含む(が、ECCバイトもスクランブルされる場合を除きECCバイトは含まない)。これは、ヘッダ長(すなわち、6バイト、14バイト等の適切な値)+物理ページ内の前のセクタ(いくつかの実施形態ではECCページ)のデータフィールド長(すなわち、512バイト、2,048バイト等の適切な値)の和によって計算される。Key_Lengthはバイト単位によるスクランブル鍵の長さである。「mod」関数(「モジュロ」関数)は、第1の引数を第2の引数で割った余りを返し、「round_down」関数は、第1の引数を第2の引数によって指示される桁数まで切り捨てたものを返す。ここでの桁数は0だから整数まで切り捨てる。後ほど図10との関係で数字の例を説明する。] 図10
[0058] 各ページの最初のセクタの場合、Dワードオフセットは0に通常設定されるが、セクタの長さは多くの場合、128バイト(すなわち、4バイト鍵×32鍵=128バイト)の偶数倍数ではないから、物理ページの別のセクタでは通常0にならない。ページはどれも、望ましくはメタページの構成(メタページ内の物理ページ数)にかかわりなく0カラムオフセットで始まる。]
[0059] 前述したように、SKNは32個の鍵のうちの物理ページ内の最初のワードに使う鍵がどれかを指示するものとして解釈できる。いくつかの実施形態では、以下の式に見られるようにページオフセット数とDワードオフセット数との和の下位5ビットを取ることによってSKNを計算できる。

ページオフセット数は、望ましくはブロック内の物理ページアドレスの最下位5ビットに設定されるか、ブロック内の論理ページアドレスの最下位5ビットに設定される。この関係は、例えば図6で各ページ内の最初のセクタ(Dワードオフセット=0)のSKNがページオフセット数に等しいことから確認できる。ページ内の各セクタのサイズが128バイトの偶数倍数ならば、各セクタは同じSKNから始まる。しかし、通常は、ページ内の各セクタでSKNが異なるようにセクタのサイズを選択する。] 図6
[0060] セクタのサイズが4バイトの偶数倍数ではない場合には、新規セクタの最初のバイトが32ビットワードの中(したがって、32ビットスクランブル鍵の中)に入ることがある。32ビットスクランブル鍵の中で開始バイト位置を指示するためにバイトオフセット数を導入する。これは鍵がセクタ境界(またはECCページ境界)にまたがる状況に対処するためのものであり、0以外のカラムオフセットでメモリの読み出しを行う場合(メモリページの中間で読み出しが始まる場合)に適切なSKNを決定する上で重要な判断材料となる。各ページの最初のセクタの場合、バイトオフセットは0に通常設定される。他のセクタのバイトオフセットは、ECCを除くセクタサイズ(またはECCページサイズ)と、セクタ数もしくはECCページ数次第で決まる。バイトオフセット数は以下の式により計算できる。

前述したように、Column_Startは物理ページ内で読み出すか書き込みが始まる最初のデータバイトである(ヘッダとデータバイトを含み、ECCバイトは含まない)。バイトオフセットは0〜3までのカウントを繰り返し、Column_Start値を増加させる。換言すると、バイトオフセット値は、スクランブル鍵の4バイトのどれが物理ページ内のバイトに対応するかを指示する。]
[0061] 図7には、32ビット鍵によるバイトオフセット数の例が見られる。最初のセクタにあたるセクタ0は518バイト長である(例えば、6バイトのヘッダと512バイトのデータ部分を反映)。これは4バイトの偶数倍数ではないから、このセクタはスクランブル鍵1の途中で終わっている。(図6でバイト512は128バイトの偶数倍数だから、Key0の最初のバイトに一致する。)セクタ1の最初のバイトはKey1内のバイト2に一致する。つまり、セクタ1はバイトオフセット値=2とDワードオフセット値=1で始まる。16セクタを含むページのSKN計算を示す図8にこれを見ることができる。この表には、0および1のページオフセット値に対応する最初の2ページが表示されている。各ページの最初のセクタは6バイトのヘッダを含み、各ページのさらなるセクタは2バイトのヘッダをそれぞれ含む。この表の最初の2行が図7に示された例に相当する。特に2行目にはDワードオフセット値=1とバイトオフセット値=2が表示されている。前述したように、ページ内のセクタのSKNが全面的には同じでないことも分かる。さらに前述したように、各ページの最初のセクタのSKNはページオフセット数に等しい。] 図6 図7 図8
[0062] 他のある実施形態では、スクランブル鍵の「ランダム性」を向上させるため、単純な開始鍵の単一ビット循環とは別の方法で後続スクランブル鍵を生成する。例えば、初期数すなわちシードを複数回循環させてさらなるスクランブル鍵を生成する。XOR操作が終わるたびに次の鍵番号を計算し(例えば、鍵を左に何ビット循環させるかを計算し)、相応に鍵を循環させる。こうすることでスクランブル鍵の繰り返しは減り、データのXORにより簡素な単一ビット循環よりランダムなデータパターンが達成される。図9には典型的な計算済み8ビット鍵系列が見られる。それぞれのスクランブル鍵は、鍵番号により当初のシードを左循環させたものである。つまり、Key6はシードKey0を6ビット左に循環させたものであるが、図に示されているように、後続鍵は単なる先行鍵の単一ビットシフトではない。この例で、Key0の後ろにはKey6が続き、その後ろにはKey3などが続いている。] 図9
[0063] しかし、前述したように、8ビット鍵より32ビット(以上)鍵のほうが好適である。そのような例では以下の式により開始鍵番号(SKN)を再帰的に計算できる。
Kn =SKNn により左に循環されるシード
SKNn+1 =[SKNn +C+P+(SKNn +P)]>>5
ここで、C=Dワードオフセット& 0x1f
P=ページオフセット数& 0x1f
SKN0 =P
ページオフセット数とDワードオフセット数とバイトオフセット数は前述した式を用いて計算する。演算子「>>」は右非循環シフト関数であり、ここでは「32により除算、剰余なし」関数となる。演算子「&」はビット単位AND演算子である。図10には、2,062バイトのECCページがあるメモリでDワードオフセット数とバイトオフセット数を計算する例が見られる。それぞれのECCページは14バイトのヘッダと4つの512バイトセクタを含み、全部で2,062バイトになる。] 図10
[0064] 必ずしもページ全体にアクセスせずとも部分的ページにアクセスできる。SKNを設定し、適切な鍵を計算すれば、スクランブル鍵を設定するためにさらなるセクタを読み書きせずとも、カード内の任意のセクタから読み書きを行える。望ましくはFWで開始鍵番号を設定し、メモリカード内の任意のECCページからスクランブリング/逆スクランブリングを開始するようにスクランブラを構成する。後ほど詳述するように、SKNは読み書きする最初のセクタの物理位置か論理ブロックアドレス(LBA)に従い各チャンクの先頭に設定される。FWは、ページオフセット数、Dワードオフセット数、およびバイトオフセット数レジスタの設定に加え、SKNを設定する。SKNを設定した後には、読み書きの対象となるセクタにとって適切なスクランブル鍵を鍵ジェネレータ(ハードウェア、ファームウェア等)で計算できる。]
[0065] ページの途中で操作が始まる場合は、図11の表に従いページオフセット、Dワードオフセット、およびバイトオフセットレジスタをFWにより設定できる。この表は、先に紹介した14バイトのヘッダとその後に続く4つのセクタをそれぞれ含む2,062バイトECCページの例を反映するものであるが、当然ながらこれとは別のサイズも考えられる。Dワードオフセットおよびバイトオフセットレジスタは、望ましくはページオフセットレジスタを設定するときにクリアされ(ほとんどの読み出しと書き込みはページの先頭で始まるため)、ページオフセットレジスタが設定された後に設定される。これらのレジスタが設定された後には、図12の表に従いFWでSKN値を設定できる。このような表は、望ましくはFWにハードコーディングされ、メモリアクセスのたびに再帰的計算を行うことなくSKNを速やかに決定できるようにする。あるいは、初期化のときにFWで32の物理ページ内で4つの各ECCページにつき対応するSKNを再帰的に計算し表を作ることもできる(すなわち、ページオフセット数の値に対応)。時間のかかる再帰的計算を一度だけ行い、表を保存すれば、メモリアクセスのたびに再帰的計算を行うことなくFWでSKNを速やかに決定できる。] 図11 図12
[0066] 逐次操作(読み出し/書き込み)がページ境界にまたがって次のページにアクセスするときには、SKNを次のページのものに調整しなければならない。メタページ内の物理ページ横断(プレーンまたはダイ境界等)での鍵値の設定は、望ましくはハードウェア(HW)によって行い、Dワードオフセットおよびバイトオフセットレジスタはマニュアルでクリアし、ページオフセット値は現状どおりに保つ。メタページ横断での鍵値の設定は、望ましくはFWの指示によりHWにより自動的に行い、SKNオートインクリメントレジスタのページインクリメントビットに「1」を書き込むことで鍵調整を開始する。オートページインクリメントビットは、望ましくはメタページトランザクションの合間に設定され、望ましくはHWによる鍵調整の後に自動的にクリアされる。]
[0067] メモリシステムまたはコントローラの中ではバッファ管理ユニット(BMU)とフラッシュインターフェイス(+ECC)との間にスクランブラを配置できる。書き込み転送のときには、フィルパターンデータを多重化した後にスクランブリングを行うことで、フィルデータもスクランブルできる。ECCチェックビット生成はスクランブリングの後に実行(スクランブル済みデータに対して実行)でき、スクランブラに通す必要はない。ECCビットそのものは既にランダムで、重ねてスクランブルする必要はないため、問題はない。データ構造設計のため、重複するセクタデータパターン(ヘッダを含む)が連続するページ上で繰り返されることは滅多にない。]
[0068] 読み出し転送のときには、ミス−コンパリゾンカウンティング(miss-comparison counting)(後述するように「消去済み」セクタと「不良ブロック」のマーカを検出する場合にも使用)の後に逆スクランブリングを行う。ECCエラーの検出は逆スクランブリングの前でもよいが、訂正は、望ましくは逆スクランブリングの後に行う。こうすれば、逆スクランブリングの前にECCビットを訂正するためにセクタ全体をバッファに入れる必要がなく、余計なバッファ操作による性能への影響がなくなる。データと次の鍵の生成との間にはフィードバックメカニズムがないため、当初のデータストリームに含まれるECCエラーは、エラービットより先のスクランブルされていないデータストリームには影響しない。]
[0069] オンチップコピー機能のサポート
ページタグ機能により、インタクトブロックは任意の論理ページで始めることができる。つまり、ページタグ値に従いブロック内の任意の物理ページにLBAを書き込める。オンチップコピー機能では、データをコントローラに完全には通さずに同一ダイの異なるブロック間でデータをコピーできる。NANDの外にはスクランブラが存在するため、オンチップコピーによってデータがそのまま(逆スクランブルも再スクランブルもなく)コピーされるとは限らない。したがって、書き込み先の物理ページにかかわりなく、同じ論理ページアドレスには同じスクランブル鍵が使用される。]
[0070] オンチップコピー(OCC)をサポートするには、物理アドレスではなく論理アドレスに基づきページオフセット数レジスタを設定する(ほとんどのブロック種別の場合)。後述するように、ある種のブロック(制御ブロック等)の場合は物理アドレスに基づきページオフセット数レジスタが設定される。]
[0071] 論理ページ計算
メタブロックを物理メタページに分割するのと同様に、論理グループは論理ページに分割できる。それぞれの論理ページは1メタページと同じサイズを持ち、メタブロックの中に多数のメタページがあるように論理グループの中には多数の論理ページがある。論理ページアドレス(論理ページ値)はLBA値から求めることができる。それにはまずメタページのサイズでLBA値を割る。32通りの鍵(32ビット)しかないならば、以下の式のように下位5ビットのみとる。

メタページ内のセクタはどれも同じ論理ページ値を持つ。ここではこれを論理ページオフセット値と記載することもある。前述したように、Dワードオフセットレジスタとバイトオフセットレジスタの値はページ内のセクタオフセットに応じて異なるため、具体的なスクランブル鍵はセクタごとに異なる。]
[0072] 初期化
FWは初期化のときにオープンブロックリストの中にあるブロックをスキャンし、電源サイクル前のカードの最後の状態を確認する。ブロック種別(制御ブロック、データブロック等)はヘッダ内のIDバイトに従って確認し(後ほど詳述)、さらにヘッダをスキャンし、オープンブロックに書き込まれたセクタのLBAを読み出してオープンアップデートブロックリストを作る。望ましくは初期化中、オープンアップデートブロックリスト作成前に、記憶データは全面的にスクランブルされる。ここでニワトリが先か卵が先かの問題が生じる。つまり、各セクタのLBAを確認するには読み出しを行わなければならないが、各セクタの内容を正しく読み出すには、逆スクランブル鍵を設定しデータのスクランブルを解くため、論理ページアドレス(LBAに基づく)が必要となる。初期化におけるこの板ばさみの状況を解決するには、スクランブルされるセクタヘッダにスクランブル鍵の情報(SKNページオフセット数等のスクランブル鍵の決定に役立つ情報)を記憶しておき、カードの初期化のときに抽出すればいい。]
[0073] 初期化が完了した後、FWはカードにおける各セクタのページオフセットレジスタ値と、ブロック種別と、位置とを把握しているため、ヘッダからSKNを抽出する必要はない。あたかもFWにとってスクランブラが存在しないかのように、FWはスクランブラレジスタを適切に設定でき、HWはデータを読み出し逆スクランブルできる。]
[0074] ヘッダにおけるスクランブル鍵情報の記憶
ページヘッダは、望ましくはスクランブル鍵の決定に役立つページオフセット数(あるいは他のスクランブル鍵情報)用として5ビットフィールド(あるいは5ビット以外の適当な長さ)を含む。図13に表示されたヘッダ形式等、様々な構成が可能である。図13のヘッダ形式には、ページ内の最初のセクタのための6バイトLBA/制御ヘッダと、残りのセクタのための2バイトヘッダがあり、シングルセクタECCページに適している(各セクタが独自のECC冗長バイトによって保護される)。2バイトヘッダは、最初の4バイトがない点を除き、6バイトヘッダと同じである。LBAを記憶する必要があるのはページの最初のセクタだけである。データ構造IDフィールド(ここではセクタIDフィールドとも呼ぶ)は、セクタの種類(制御セクタ、データセクタ等)を識別するために使用する。アプリケーションバイトフィールドは個々のアプリケーション用に残しておく。] 図13
[0075] ある実施形態ではページのサイズを大きくするのが望ましい。例えば図14に見られるECCページは長さが4セクタあり(それぞれ2KBのユーザデータ情報が一群のECC冗長バイトによって保護される)、4つの各セクタにつき2バイトのセクタヘッダとページのLBAを含み、1ヘッダ14バイトとなっている。それぞれの2バイトセクタヘッダにはページオフセットフィールドがある。これはデータのスクランブリングに使われたページオフセット数を確認するために使われる。] 図14
[0076] 望ましくはヘッダそのものも残りのセクタ内のデータとともにスクランブルされるため、実際のページオフセット値がヘッダに直接書き込まれるのではない。代わりにページコードがFWによってヘッダに書き込まれ、これが(HWにより)スクランブルされ、マッピング済みページオフセットコードとしてメモリページに実際に書き込まれる。図15に見られる典型的なページオフセットマッピング表は0x69C734C6のシードに対応するものである。これと同じデフォルトシードで別のマッピング表も可能であり、これとは別のデフォルトシードで異なるマッピング表も可能であるが、いずれも概念的にはこの表に類似したものとなる。この表の最初の列はページオフセット値(32の鍵があるために0〜31)である。2番目の列にはページコードが記載されている。これがFWによってメモリページに書き込まれる値である。ページのスクランブル鍵はページオフセット値に左右されるため、スクランブルはページごとに異なる。この例ではセクタ0の5ビットページオフセットフィールドがセクタ0内の最初のワードのビット位置11〜15に対応するため、書き込まれるページコードは該当するスクランブル鍵のビット11〜15によってスクランブルされ(3番目の列に表示)、4番目の列に表示されたマッピング済みページオフセットコードが生成される。] 図15
[0077] この参照表は、ページオフセット値と、FWによって書き込まれ、スクランブルされ、メモリページに記憶されるページコードとの間に、1対1のマッピングを提供する。図15の右側に見られる逆方向マッピング表は、実際にヘッダに記憶され、スクランブラを無効にした状態で読み出される、スクランブル済み5ビット値と、スクランブルされていないページオフセット値(ページ内で最初のセクタのSKN値)との間に、1対1のマッピングを提供する。このような参照表は特定のシードに基づき、望ましくはFWによりRAMに記憶される。こうすれば書き込み中のマッピングが速くなり、スクランブルされたヘッダを読み出した後には速やかにSKNを割り出すことができる。] 図15
[0078] FWは書き込みコマンドのときに書き込みコマンドのブロック種別と、目標物理位置と、論理アドレスとを認識する。つまり、FWは、論理ページに基づくものであれ、物理ページに基づくものであれ(本願明細書の他所で説明した制御ブロックの場合等)、ページオフセット値を認識する。FWは書き込みコマンドの一部としてページオフセットマッピング表でページオフセット値を調べ、この表からヘッダのページオフセットフィールドに5ビットのページコードを書き込むことができる。それらの5ビットはページ内のデータとともに(例えば、HWにより)スクランブルされ、特別な処理は必要ない。スクランブリングの後、5ビットマッピング済みページオフセットコードはそれぞれ別々の値を持ち、初期化のときにはこれらをもとにページオフセット値を一意に識別する。]
[0079] ヘッダからのSKN抽出
初期化のときには鍵がまだ分からないため、スクランブラを迂回してヘッダを読み出すことができる。望ましくはヘッダ全体がスクランブルされるため、スクランブラを無効にした状態でページオフセット数を単純に読み出すことはできない。代わりにマッピング済みページオフセットコードを読み出し、図15の逆方向マッピング参照表を使用するなどしてページオフセット値を割り出し、スクランブル鍵を計算する。初期化のときに読み出す必要があるのは各メタページの先頭のヘッダだけであり、Dワードオフセットとバイトオフセットはいずれも0に等しいため、5ビットのヘッダフィールドから抽出されるページオフセットは最終SKN値に相当する。かかる表を変換関数に置き換えることもできる。かかる表を使用すれば、ページオフセット値と、実際にヘッダに書き込まれる5ビットフィールドとで1対1のマッピングが保証される。] 図15
[0080] SKNが分かれば、FWでスクランブルシードをSKNの分だけ左に循環させてスクランブル鍵を計算できる。鍵が判明したら、スクランブル鍵によりヘッダデータをXOR化し、ヘッダ情報を解くことができる。あるいは、スクランブラを有効にし、スクランブラレジスタを設定し、データを逆スクランブルするためにスクランブラ回路を使ってセクタを再度読み出すこともできるが、ヘッダの長さは通常僅か数バイト(例えば、6バイト、14バイト等)だから、単にFWでデータをXOR化するほうが格段にシンプルかつ迅速である。FWで逆スクランブルする場合は、前述したXOR操作のたびにFWで鍵の循環を計算(あるいは鍵をシフト)しなければならない。]
[0081] 図15に見られる表は、物理ページ内の最初のECCページのみ参照するものであり、物理ページ内の他のECCページの場合、フラッシュに書き込まれる値は異なる。これまで説明してきた典型的な実施形態の場合には、図16の表にこれを見ることができる。この表は、32あるページオフセット値ごとに物理ページ内の4つのECCページのSKN値を示すものである。Column_Start値と、Dワードオフセット値と、物理ページ内における各バイト位置のバイトオフセット値と、対応するSKNも表示されている。特にページの先頭で始まらないメモリの読み書きの場合にSKN操作の判断を迅速化するため、この表も望ましくは初期化のときにFWで作成する。また、前述したように、SKNを再帰的に計算する場合に特に有益である。] 図15 図16
[0082] シーケンシャルなアップデートブロック/
インタクトブロックにおけるページオフセット数
シーケンシャルなアップデートブロックまたはインタクトブロックは、ブロックへの最初の書き込みのときにページタグオフセットパラメータを設定する。これは、論理グループの中でアップデートブロックに書き込まれる最初の論理ページのオフセットによって決まる。論理ページは1つのメタページに書き込まれる一連のセクタであってもよく、つまり、メタページのサイズを持ち、メタページの境界に揃えられる。ページタグパラメータが設定されると、最初の論理ページから全ての論理ページが順次アップデートブロックに書き込まれ、それぞれの論理ページは書き込み先の物理ページに対して同じオフセットを持つ。
ページタグ値からスクランブル鍵を独立させるため、ページオフセット数レジスタの設定は、物理ページ値ではなく論理ページ値に従って決定される。ページタグがゼロの場合には2つの値が一致する。]
[0083] カオス的アップデートブロックにおけるページオフセット数
不連続セクタ順に書き込まれるブロックはカオス的アップデートブロックとして知られている。シーケンシャルなアップデートブロックと同様に、カオス的アップデートブロックもまたページオフセット数として論理ページを使用し、オンチップコピー機能の使用を可能にする。ここでの問題は、同じページを同じブロックに繰り返し書き込むことができるため、どのページにも同じスクランブル鍵が使われブロック全体を通じて反復するパターンができることである。この問題を回避するため、カオス的アップデートブロックの場合は下位メモリページのみ使用する。(つまり、1メモリセル当たり4MLC状態のうちの2状態のみ書き込むことで当該ブロックをバイナリブロックとして扱う。)こうすることで反復パターンに起因するブースト効果が緩和され、プログラムディスターブ現象は回避される。図2Cから分かるように、下位ページのみ書き込む場合の2状態間のしきい値電圧差は、下位・上位ページを両方とも書き込む場合より大きいため、マージンの向上が達成される。] 図2C
[0084] 制御ブロックとスクラッチパッドブロックにおけるページオフセット数
主に単一セクタ単位でアクセスされる制御ブロックにはオンチップコピーを使用しない。このため、望ましくは物理ページをページオフセット数として使用し、書き込み先の物理ページ番号に対応する鍵でページにスクランブルをかけるようにする。また、メモリセルの信号マージンを拡大するため、制御ブロックの場合にも下位メモリページのみ使用できる。]
[0085] ファイルシステムブロックにおけるデータのスクランブリング
望ましくは、ブートブロックとファームウェア(FW)ブロック(ファイルシステムブロック内)を含む全ての制御ブロックをスクランブルする。典型的なフラッシュファイルシステムではFWによってブートブロックをスキャンし、読み出すことでファイルシステムブロックのポインタを見つける。このファイルシステムブロックも部分的にはFWによって読み出される。ブートブロックとファイルシステムブロックはいずれも書き込み時にスクランブルされるため、FWでデータを逆スクランブルできなければならない。FWではページの読み出し(+逆スクランブル)に必要な機能だけサポートすればよい。具体的には、シードを読み出す種々のレジスタの設定と、使用する逆スクランブル鍵の指定をFWでサポートする。]
[0086] メタブロックジオメトリと、ECCレベルと、デバイスIDに関する情報を保持するブートブロック内の最初のページには、望ましくはブートブロックとファイルシステムブロックのスクランブルに使ったスクランブラシードを入れる。しかし、最初のページそのものは、望ましくはHWに組み込まれたデフォルトのスクランブラシードを使ってスクランブルする。初期化プロセスが始まると、デフォルトシードを使って最初のページが読み出される。その後、カードの残りの部分に使用するシードが最初のページから読み出され、スクランブラに読み込まれ、以降の操作に使われる。ブートブロック内の残りのページは、(他の制御ブロックと同様に)物理ページ値に従って設定されるページオフセットレジスタを用いてスクランブルされる。FWには、物理ページオフセットに従ってレジスタを設定する機能を盛り込まなければならない。スクランブラを正しく動作させるには、たとえシードがデフォルトシードと同じ値であっても、ブートブロックでシードを明示的に設定しなければならない。シード値が0の場合は基本的に、たとえスクランブラが有効になっていてもデータはスクランブルされない。]
[0087] 不良ブロック検出
通常、不良ブロックの検出はスクランブラを迂回して行う。最初のダウンロードではどのブロックにも情報が入っていないから問題はない。以降のダウンロードでカードにある程度の情報が書き込まれた後には、スクランブルされたデータが誤って不良ブロックと解釈されることがある。不良ブロックのマーキングはベンダによって異なるため、ベンダごとに異なる検出方式が求められる。]
[0088] 一部のベンダでは、ブロック全体に0を書き込むことによって工場不良ブロックをマークする。前述したように、スクランブル鍵(すなわち、デフォルト値0x69C734C6)を使用する場合、スクランブリング後に全てのヘッダバイト(LBAとデータ構造ID等)が値「00」となり、ページ内の最初のセクタに記憶されるようなヘッダの組み合わせはあり得ない。通常、ヘッダはスクランブル後に全てのヘッダバイトが「00」となる可能性をなくすように設計される。したがって、ヘッダで「00」パターンを探す検出方式を利用できる。そのような検出は、スクランブラを迂回することによって容易く果たすことができる。]
[0089] ベンダによっては、ユーザデータエリア内の単一バイト(ヘッダエリアやECCではなくセクタの512データバイト以内)に「FF」以外のパターンを書き込むことによって工場不良ブロックをマークする。このバイトの具体的な位置はメモリのタイプによって変化する。ビッグブロック(各ページに複数のセクタを含む)MBCメモリではしばしば、最終ページのバイト2,048に非FFパターンを書き込むことで不良ブロックをマークする。ビッグブロックBINメモリ(1セル当たり単一ビット)では、最初のページか2番目のページのバイト2,048に非FFパターンを書き込むことによって不良ブロックをマークする。]
[0090] スクランブリングの後には不良ブロックマーク用バイトが非FF値を持つことがあり、スクランブルがかかったデータ構造IDも認識されないため、誤って不良ブロックとして検出されることがある。しかし、ECCエンジンは全てのビットが全てゼロか全て「FF」となる場合に訂正不能のECCエラー(UECC)を指摘するので、ECCエンジンのミス−コンパリゾンカウンティングブロックを使って工場不良ブロックと良好ブロックを区別できる。]
[0091] 検出のときにはスクランブラを迂回し、ECCエンジンを有効にする。不良ブロックマークを保持するセクタの読み出しに成功する場合は、不良ブロックマークバイトの値にかかわりなく、ブロックは良好ブロックとして検出される。UECCでも訂正可能なECCでもないセクタは正常に読み出される。不良ブロックマークを保持するセクタの読み出し結果がUECCで、不良ブロックマークバイトの値が全「FF」でなければ、不良ブロックの疑いがかかる。この場合は疑わしいブロックのページ0を読み出す。ページ0内の全セクタがUECCになるならば、不良ブロックと判断される。ページ0内のいずれかのセクタが正常に読み出されるならば、良好ブロックと判断される。勿論これは数ある不良ブロック検出法の1つにすぎない。]
[0092] 典型的な実施例
前述した手法を様々な特定の実施例において実行することができる。図17には、前述したスクランブラ機能を実施する典型的な作業の流れ図が見られる。図18に見られる典型的なモジュールをこれより説明する。かかるスクランブラモジュールにはASICの実施例が適しており、望ましくは自立型のハードウェアブロックとし、CPUのタイプや特定のASIC設計アーキテクチャに左右されることなく様々なASICプロジェクトの中で容易に統合できる(もしくは除去できる)ようにする。] 図17 図18
[0093] このスクランブラハードウェアブロックはデータ経路に直接配置できる。前述したように、ヘッダやユーザデータと併せてECCバイトもスクランブルでき、その場合は当然ながら、メモリインターフェイスへ至るデータ経路の終端にスクランブラブロックを配置すべきである。しかし、ECCビットのスクランブルは必須ではないから、終端より前にスクランブラを配置することもできる。このスクランブラモジュールにとっては1つのクロックソースで十分である。クロック周波数は、望ましくはスクランブラモジュールのバス速度以上とする。]
[0094] 例えば、32ビットのデータ入力バスとデータ出力バスでスクランブラにデータを流すことができるが、そのようなポートのサイズを内部ASICバスによって16ビットまで制限することができる。専用の16ビット制御データ入力バスはコントロールレジスタへのアクセスを提供する。5ビット入力アドレスバスはコントロールレジスタをアドレス指定し、HWフロー制御操作中に開始鍵番号をラッチするためのものである。]
[0095] 内部コントロールレジスタへのアクセスとHWフロー制御のため、望ましくは1組の制御線を盛り込む。スクランブラモジュールを初期状態にリセットしHWフロー操作を準備するには、リセット線をアサートする。Control_Data_In[15:0]を通じてレジスタアクセスを制御するため、読み出し/書き込み(R/W)制御信号を提供する。加えて、コントロールレジスタアクセスモードとHWフロー制御モードを選択するためにControl_SEL線を設ける。デフォルト選択は、望ましくはHWフロー制御に設定する。]
[0096] スクランブラモジュールは、シードレジスタ、コンフィギュレーションレジスタ、SKNページオフセットレジスタ、SKNセクタオフセットレジスタ等、数通りのレジスタを含む。シードレジスタは、望ましくはシードと同じ初期鍵すなわちKey0を記憶する32ビットR/Wレジスタである。デフォルト鍵は0x69C734C6かこれとは別の適当な値とすることができる。加えて、記憶済みシードレジスタ値のシフタへの読み込みをトリガするためにコントロールレジスタを設ける。]
[0097] また、スクランブラモジュールの動作を制御するためにコンフィグレーションレジスタが含まれる。例えば、このような制御には、シフタ連続循環を有効または無効にするかが含まれる。望ましくは、連続シフタ循環有効をデフォルト設定とする。循環を無効にすると、メモリページ全体で同じ鍵の使用が余儀なくされる(プリクロッキングにより鍵が循環される)。コンフィグレーションレジスタでは、スクランブリング機能の完全迂回を有効にするか否かも制御する。迂回が有効になると、データは操作されることなくモジュールを通過し、遅延と消費電力は最小限になる。望ましくは、完全迂回有効をデフォルト設定とする。]
[0098] SKNページオフセットレジスタは、望ましくは開始鍵番号を記憶する5ビットR/Wレジスタである(32通りの鍵を仮定)。デフォルト値は、望ましくは0(Key0)とする。コントロールレジスタアクセスモードでは、望ましくはリセットのときにレジスタ値をデフォルト値に戻す。HWフロー制御モードでは、リセットのときにアドレス入力ポートからレジスタ値を読み込む。SKNレジスタに読み込まれる値は、物理ページアドレスか論理ページアドレスの下位5ビットに対応するメモリページアドレスに基づく。]
[0099] Dワードオフセット数(5ビット値等)とバイトオフセット数(2ビット値等)は別々のレジスタに記憶できるが、SKNセクタオフセットレジスタと呼ばれる1つの7ビットR/Wレジスタに便宜的にまとめることもできる。このSKNセクタオフセットレジスタは、開始鍵番号からのオフセットを記憶するものと見ることができる。デフォルト値は、望ましくは0とする。このレジスタ値は、望ましくは動作モードにかかわりなくリセットのときにデフォルト値に戻るものとする。]
[0100] 前述したように、この7ビットレジスタは32ビットの鍵サイズに基づき以下の表1に記載された2つのフィールドを含む。

SKNセクタオフセットレジスタのビット[6:0]は、メモリカラムアドレス[6:0]か論理ページの先頭からの相対的7ビットバイトオフセット(前述したColumn_Start値)に直接対応している。5ビットDワードオフセット数は、スクランブル/逆スクランブルされる開始セクタの最初のバイトに対応するオフセット鍵番号を指示する。Dワードオフセット数はSKNを基準とするため、値0はセクタ0アクセスに相当する。]
[0101] 2ビットのバイトオフセット数は1鍵内での開始バイト位置を指示する。これは鍵がセクタ境界にまたがる状況に対処するためのものであり、0以外のカラムオフセットでメモリの読み出しを行う場合(メモリページの中間で読み出しが始まる場合)に適切なSKNを決定する上で重要な判断材料となる。各ページのセクタ0のバイトオフセットは0である。他のセクタのバイトオフセットは、セクタサイズと、セクタ数と、バイト単位による鍵サイズ次第で決まる。32ビット鍵に基づくDワードオフセット数とバイトオフセット数の実施例は、図7、8、10、および11との関係で前に紹介した。] 図7
[0102] スクランブラモジュールの内部にはまた、一定左方向にビットを循環させるパラレルイン/パラレルアウトシフトレジスタかこれに類似する回路がむしろ設計される。シフトされ一端から外されるビットは周回的に他端に復帰する。固定サイズ(32ビット等)により、カラムオフセットによるメモリ読み出しで開始鍵番号を復号化するシステムの実装が容易になる(SKNページオフセットレジスタの説明を参照されたい)。このサイズによって鍵の数も決まる。]
[0103] シフトレジスタは、望ましくはリセットのときに自動的にシードを再度読み出し、開始鍵番号を読み出す。また、シードレジスタから最初の鍵を読み出せるようにする。SKNレジスタに記憶されたカウントに基づくプリクロッキングも可能にする。このようなプリクロックカウントはSKNページオフセットレジスタに記憶されるページオフセット数と、SKNセクタオフセットレジスタに記憶されるセクタオフセット数に依拠することができる。シフトレジスタを使用すると、特にプリクロッキングのコンセプトにより待ち時間が生じる。これに対処するには、高速クロックを使用するか、バレルシフタ等の高速タイプのシフトレジスタを利用してデータが到着する前にプリクロックする。]
[0104] スクランブラモジュールはまた、2つの入力ポートと1つの出力ポートを有するXOR回路を含み、各々32ビット幅まででパラレルイン/パラレルアウト操作に対応する。一方の入力ポートはデータ入力ポートへ接続され、他方の入力ポートはシフタ出力へ接続される。ただ1つの出力ポートはデータ出力ポートへ接続される。]
[0105] HWフロー制御では、Clock、Reset、Address[4:0]のみでスクランブラ動作を全面的に制御でき、レジスタアクセスを必要としない。ひとたびスクランブラのレジスタが構成されたら、これが標準の動作モードとなる。基礎的なスクランブリング操作は、例えば以下の要領で果たすことができる。まずはスクランブラコンフィギュレーションレジスタをセットアップし、次にHWフロー制御モードに切り替える。アクセスすべき最初の5ビットメモリページアドレスをアドレス入力バス沿いに提示する。RSTパルスがアサートされると、アドレス入力バスからページ開始鍵番号レジスタが読み込まれ、シフタにはシード(シードレジスタの内容)が読み込まれる。クロック遷移に応じてスクランブラはスクランブルがかかっていないデータをデータ入力ポートから引き出し、データをスクランブルし、スクランブルしたデータをデータ出力ポートへ出力し、Resetにより構成が変更されるまでこの要領で作業を続ける。いくつかの実施形態では、ビットシリアルシフタをプリクロックしスクランブラで使用する適切なスクランブル鍵を計算するため、いくつかのクロック遷移が必要となることもある。スクランブルを解く場合も全般的な動作は同じである。]
[0106] 通常、メモリアクセスがメモリページの先頭に揃う場合はスクランブラモジュールを初期化する。これが標準の動作モードであり、(1)HWフロー制御動作モードを有効にし、(2)適切な下位5ビットメモリページアドレスをスクランブラアドレス入力ポートへ送信するにあたって、最小限のFW制御を必要とする。メモリアクセスがメモリページの先頭で始まらない場合は、コントロールレジスタアクセスモードにより開始鍵番号レジスタに適切な鍵値を読み込まなければならない。コントロールレジスタアクセスモードが有効になると、SKNページオフセットレジスタにメモリページアドレスが読み込まれ、SKNセクタオフセットレジスタにメモリカラムアドレスが読み込まれた後、スクランブラの動作はHWフロー制御モードに切り替わる。]
[0107] スクランブラは、制御データとしてファイルシステムに記憶されたパラメータ設定により制御できる。役に立つパラメータには、例えば、スクランブラを迂回するか否か、スクランブラのデフォルトシードを使用するか、それとも別のシードを読み込むか、連続循環のためにシフタを有効にするか、それとも診断等のために無効にするかといったことが含まれる。そのような構成は、望ましくは電源投入初期化のときに行う。]
[0108] その全体が本願明細書において参照により援用されている2007年6月13日に出願されたSharonらによる同時係属出願中の「Randomizing for Suppressing Errors in a Flash Memory」という米国特許出願第11/808,905号(特許文献8)に記載されたランダム化モジュールを、本願明細書に記載されたデータスクランブリングモジュールに概ね相当するものとみなせば、特許文献8の図もまた本発明によるメモリシステムおよびモジュールを表しているといえる。]
[0109] 図19を参照すると、メモリブロック内の各ワード線の最初の16バイトでスクランブルがかかっていない反復0xFFデータのメモリセル状態を示す表が示されている。図20は、同じワード線の最初の16バイトで前述したスクランブルをかけた後のスクランブル済みメモリセル状態を示す。] 図19 図20
[0110] 追加の代替案
いくつかの実施形態では、システムで2段階のメモリ読み出し操作を行ってもよい。まず逆スクランブラを無効にして読み出しを行い、SKNを抽出し、抽出したSKNを用いてスクランブルがかかっていない鍵を検索し、次にスクランブルがかかっていないSKNを使用し逆スクランブラを有効にして2番目の読み出しを行う。しかし、この場合はシステム全体の性能に影響し、ホストのタイムアウトが懸念される。これとは別の実施形態も可能であるが、システム設計の課題および/または要求のトレードオフになる。例えば、ヘッダ等の制御情報は必ずしもスクランブルする必要はなく、その場合でもページ内データをランダム化する利点の多くは残る。もうひとつの実施例として、SKN情報は暗号化されていない状態でセクタのヘッダに記憶することができる。]
[0111] いくつかの実施形態では、ページオフセット値ではなくSKNをページヘッダに記憶できる。あるいは、ページに使用する最初の鍵を記憶できる。ビット線にわたって望ましくないデータパターンができる可能性があるが、鍵やページオフセット値は、まったくスクランブルされていない状態で記憶することもできる。]
[0112] 前述した循環スクランブル鍵生成手法が確定的スクランブル鍵系列を生成する唯一の方法というわけではない。線形シフトフィードバックレジスタ(LFSR)を利用し、最初のシードに基づき擬似ランダム系列を生成する方法もある。このシードは、前述したものと同様のやり方で論理ページアドレスか物理ページアドレスに基づき各ページに関連付けることができる。前に援用されている米国特許出願第11/808,905号(特許文献8)には、フラッシュメモリでデータをランダム化するLFSRの用例が記載されている。
前述した説明では、ページオフセット値を記憶するページオフセットレジスタ等、特定の値を記憶するレジスタに頻繁に言及している。これらは典型的なスクランブラの実装に言及するものであり、汎論を制限するものとして見るべきでない。
メモリページは多くの場合8〜16セクタを含むが、これとは別の値も使用できる。それぞれのセクタは通常512バイトのデータとセクタヘッダを含むほか、ECC冗長バイトを含むこともある。一部の形式では一群のECCバイトで複数のセクタを保護する。
本願のブロック図は、ブロックを結ぶ単一ノードという用語を用いて説明できる。しかし、文脈次第ではかかる「ノード」が実際には差分信号を伝送する1対のノードに相当することもあれば、数通りの関係信号を搬送するか、デジタルワードを形成する複数の信号を搬送する複数の個別電線(バス等)に相当することもある。ここで用いる結合とは、直接的な結合と間接的な結合のいずれかを意味する。]
[0113] ここで用いる用語は限定としてとられるかもしれないが、典型的な実施形態を説明するものにすぎず、発明自体を限定するものとして解釈すべきでない。これまで不揮発性NANDメモリの典型的な脈絡の中で様々な実施形態を説明してきたが、本発明は揮発性メモリデバイス等、タイプの異なるメモリデバイスにも役立てることができる。
ここで用いた鍵系列のコンセプトは実際、実施例の一目的にすぎない(一度に32ビット等)。例えば、8つの8ビット鍵からなる系列は、実際には64ビット鍵1個と何ら変わりない。例えば、スクランブル鍵が十分に長ければ、一定ビット幅のデータチャンクに対して鍵はただ1つでよいが、鍵が短ければ、データチャンクを完全にスクランブルするために一連の鍵が必要となる。実施形態によっては複数のシード鍵が使われ、それらのシード鍵は例えば論理アドレスに基づき決定される。]
[0114] 前述した詳細な説明では、本発明の数ある実施例のほんの一握りを説明したにすぎない。このため、この詳細な説明は限定ではなく例説を目的とするものである。ここに記載された説明を踏まえれば、本発明の範囲と趣旨から逸脱することなく、ここに開示された実施形態の変更や修正を果たすことができる。また、前述した発明概念と実施形態は単独での使用と様々な組み合わせでの使用が具体的に考えられる。本発明の範囲を規定するものは添付の特許請求の範囲とこれの同等物だけである。]
权利要求:

請求項1
不揮発性メモリに情報を記憶する方法であって、シード鍵とデータグループの論理ページアドレスとに基づき開始鍵を決定するステップと、前記開始鍵に対応する確定的鍵系列を用いてデータグループをランダム化するステップと、前記ランダム化されたデータグループを不揮発性メモリの物理ページに記憶するステップと、を含む方法。
請求項2
請求項1記載の方法において、前記論理ページアドレスの認識情報なしに開始鍵を決定するためのさらなる情報を、前記不揮発性メモリの物理ページに記憶するステップをさらに含む方法。
請求項3
請求項2記載の方法において、前記物理ページ内の複数の場所に前記さらなる情報を記憶するステップをさらに含み、これにより、開始鍵の決定にあたって、たとえ1つの場所が壊れていても別の場所は引き続き読み出すことができる方法。
請求項4
請求項2記載の方法において、前記決定するステップは、論理ページオフセット値に基づきスクランブル鍵系列のインデックスを決定するステップと、前記シード鍵に対応する反復Mビットスクランブル鍵系列の中で前記開始鍵を識別するためにインデックスを使用するステップと、を含む方法。
請求項5
請求項2記載の方法において、前記開始鍵に対応する前記確定的鍵系列を用いてランダム化された情報として前記さらなる情報を記憶するステップをさらに含む方法。
請求項6
請求項2記載の方法において、論理ページオフセット値に関連するページコードを決定するステップと、前記論理ページオフセット値と1:1に対応するマッピング済みページオフセットコードを生成するため、前記開始鍵に対応する前記確定的鍵系列を用いてページコードをランダム化するステップと、前記不揮発性メモリの物理ページのページヘッダに前記さらなる情報として前記マッピング済みページオフセットコードを記憶するステップと、をさらに含む方法。
請求項7
請求項6記載の方法において、電源投入時に前記不揮発性メモリを初期化するステップをさらに含み、前記初期化するステップは、マッピング済みページオフセットコードを含むランダム化メモリページヘッダを読み出すステップと、前記マッピング済みページオフセットコードから対応するページオフセット値を抽出するステップと、前記ページオフセット値と前記シード鍵とに基づき開始鍵を決定するステップと、前記開始鍵に対応する確定的スクランブル鍵系列を用いて前記メモリページを読み出しかつ逆ランダム化するステップと、を含む方法。
請求項8
請求項7記載の方法において、前記シード鍵と第2のデータグループの物理ページアドレスとに基づき第2の開始鍵を決定するステップと、前記第2の開始鍵に対応する確定的鍵系列を用いて前記第2のデータグループをランダム化するステップと、前記ランダム化された第2のデータグループを前記不揮発性メモリの第2の物理ページに記憶するステップと、をさらに含み、前記初期化するステップは、開始鍵が論理ページアドレスに基づくブロックと、開始鍵が物理ページアドレスに基づくブロックとで行われ、前記第2のデータグループは、フラッシュファイルシステムの制御ブロックに対応する方法。
請求項9
請求項1記載の方法において、前記ランダム化されたデータグループをECC符号化するステップと、非ランダム化ECC冗長バイトを前記不揮発性メモリに記憶するステップと、をさらに含む方法。
請求項10
請求項2記載の方法において、前記不揮発性メモリに書き込まれる全ページヘッダ情報をランダム化するステップをさらに含む方法。
請求項11
請求項10記載の方法において、論理ページアドレスではなく物理ページアドレスを用いてフラッシュファイルシステムの制御ブロックをランダム化するステップと、所定のデフォルトシード鍵を用いて前記フラッシュファイルシステムのブートブロックをランダム化するステップと、をさらに含む方法。
請求項12
請求項1記載の方法において、前記確定的鍵系列は各々MビットからなるM個の独立したスクランブル鍵を含み、それぞれのスクランブル鍵N(KeyN)は、事前定義のシード鍵(Key0)のNビット環状循環に対応し、前記ランダム化するステップは、確定的Mビットスクランブル鍵系列を用いるビット単位XOR操作を含む方法。
請求項13
請求項12記載の方法において、確定的系列内で連続する各スクランブル鍵は、先行するスクランブル鍵の単一ビット循環である方法。
請求項14
請求項12記載の方法において、前記確定的系列内で連続する各スクランブル鍵は、ビットの計算値によるシード鍵のビット単位循環であり、前記連続する鍵のビットの計算値は、現在の鍵に依存する方法。
請求項15
不揮発性メモリにデータを記憶する方法であって、メモリページの論理ブロックアドレスを用いてページオフセット数を決定するステップと、シード鍵と前記ページオフセット数とに基づき開始鍵を決定するステップと、前記開始鍵に対応する確定的スクランブル鍵系列を用いてページデータをスクランブルするステップと、前記ページオフセット数に対応する識別子を前記不揮発性メモリの物理ページのヘッダに記憶するステップと、前記スクランブルされたページデータを前記物理ページに記憶するステップと、を含む方法。
請求項16
請求項15記載の方法において、前記不揮発性メモリに書き込まれる全ページヘッダ情報をスクランブルするステップをさらに含み、確定的鍵系列は各々MビットからなるM個の独立したスクランブル鍵を含み、それぞれのスクランブル鍵N(KeyN)は、事前定義のシード鍵(Key0)のNビット環状循環に対応し、前記識別子は、反復Mビットスクランブル鍵系列の中で前記開始鍵を識別するインデックスを含む方法。
請求項17
請求項16記載の方法において、前記スクランブルするステップは、確定的Mビットスクランブル鍵系列を用いるビット単位XOR操作を含む方法。
請求項18
装置であって、不揮発性メモリと、メモリコントローラであって、シード鍵とデータグループの論理ページアドレスとに基づき開始鍵を決定し、前記開始鍵に対応する確定的鍵系列を用いてデータグループをランダム化し、前記ランダム化されたデータグループを前記不揮発性メモリの物理ページに記憶するように構成されたメモリコントローラと、を備える装置。
請求項19
請求項18記載の装置において、前記不揮発性メモリは、前記メモリコントローラから独立した別個の集積回路を備える装置。
請求項20
請求項18記載の装置において、前記メモリコントローラは、前記論理ページアドレスの認識情報なしに前記開始鍵を決定することができるさらなる情報を、前記不揮発性メモリの前記物理ページに記憶するようにさらに構成された装置。
請求項21
請求項20記載の装置において、前記メモリコントローラは、論理ページオフセット値に基づきスクランブル鍵系列のインデックスを決定し、前記シード鍵に対応する反復Mビットスクランブル鍵系列の中で前記開始鍵を識別するためにインデックスを使用するようにさらに構成された装置。
請求項22
請求項20記載の装置において、前記開始鍵に対応する前記確定的鍵系列を用いてランダム化された情報として前記さらなる情報が記憶される装置。
請求項23
請求項20記載の装置において、前記メモリコントローラは、論理ページオフセット値に関連するページコードを決定し、前記論理ページオフセット値と1:1に対応するマッピング済みページオフセットコードを生成するため、前記開始鍵に対応する前記確定的鍵系列を用いて前記ページコードをランダム化し、前記不揮発性メモリの前記物理ページのページヘッダに前記さらなる情報として前記マッピング済みページオフセットコードを記憶するようにさらに構成された装置。
請求項24
請求項23記載の装置において、前記メモリコントローラは、電源投入時に前記不揮発性メモリを初期化するようにさらに構成され、前記初期化することは、マッピング済みページオフセットコードを含むランダム化メモリページヘッダを読み出すことと、前記マッピング済みページオフセットコードから対応するページオフセット値を抽出することと、前記ページオフセット値と前記シード鍵とに基づき開始鍵を決定することと、前記開始鍵に対応する確定的スクランブル鍵系列を用いてメモリページを読み出しかつ逆ランダム化することと、を含む装置。
請求項25
請求項24記載の装置において、前記メモリコントローラは、前記シード鍵と第2のデータグループの物理ページアドレスとに基づき第2の開始鍵を決定し、前記第2の開始鍵に対応する確定的鍵系列を用いて前記第2のデータグループをランダム化し、かつ前記ランダム化された第2のデータグループを前記不揮発性メモリの第2の物理ページに記憶するようにさらに構成され、前記初期化することは、開始鍵が論理ページアドレスに基づくブロックと、開始鍵が物理ページアドレスに基づくブロックとで行われ、前記第2のデータグループは、フラッシュファイルシステムの制御ブロックに対応する装置。
請求項26
請求項18記載の装置において、前記ランダム化されたデータグループはECC符号化され、かつ非ランダム化ECC冗長バイトは前記不揮発性メモリに記憶される装置。
請求項27
請求項20記載の装置において、前記不揮発性メモリに書き込まれる全ページヘッダ情報は、ランダム化される装置。
請求項28
請求項27記載の装置において、フラッシュファイルシステムの制御ブロックは、論理ページアドレスではなく物理ページアドレスを用いてランダム化され、前記フラッシュファイルシステムのブートブロックは、事前定義のデフォルトシード鍵を用いてランダム化される装置。
請求項29
請求項18記載の装置において、前記確定的鍵系列は、各々MビットからなるM個の独立したスクランブル鍵を含み、それぞれのスクランブル鍵N(KeyN)は、所定のシード鍵(Key0)のNビット環状循環に対応する装置。
請求項30
請求項29記載の装置において、前記ランダム化することは、確定的Mビットスクランブル鍵系列を用いるビット単位XOR操作を含み、確定的系列内で連続する各スクランブル鍵は、ビットの計算値によるシード鍵のビット単位循環である装置。
請求項31
請求項30記載の装置において、前記連続する鍵のビットの計算値は現在の鍵に依存し、また、ページオフセット値と対応する連続するワードのDワードオフセット値にも依存する装置。
請求項32
請求項18記載の装置において、前記確定的鍵系列は、前記開始鍵に対応する開始値を有する線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダム鍵系列を含む装置。
类似技术:
公开号 | 公开日 | 专利标题
US9665301B2|2017-05-30|Methods and devices for storing user data along with addresses corresponding to physical pages storing valid data
US9471425B2|2016-10-18|Data conditioning to improve flash memory reliability
JP6202972B2|2017-09-27|Memory system and reading calibration method thereof
US9436609B2|2016-09-06|Block addressing for parallel memory arrays
USRE45515E1|2015-05-12|Built in on-chip data scrambler for non-volatile memory
JP5617079B2|2014-11-05|Nonvolatile memory and method with control data management
TWI436213B|2014-05-01|基於等量記憶體區之非揮發性多階記憶體操作
US20190340065A1|2019-11-07|Memory devices having differently configured blocks of memory cells
US9384127B2|2016-07-05|Flash memory architecture with separate storage of overhead and user data
US8817535B1|2014-08-26|Programming method for multi-level cell flash for minimizing inter-cell interference
US8397019B2|2013-03-12|Memory for accessing multiple sectors of information substantially concurrently
US5956743A|1999-09-21|Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US8996959B2|2015-03-31|Adaptive copy-back method and storage device using same
TWI498898B|2015-09-01|資料寫入方法、記憶體控制器與記憶體儲存裝置
US9411686B2|2016-08-09|Methods for accessing a storage unit of a flash memory and apparatuses using the same
US8452912B2|2013-05-28|Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20150113357A1|2015-04-23|Data streaming for solid-state bulk storage devices
US6826663B2|2004-11-30|Coded write masking
JP6072442B2|2017-02-01|Memory system and operation method thereof
TWI479494B|2015-04-01|基於疲乏條件之非揮發性記憶體單元的更新
US7333364B2|2008-02-19|Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US8914703B2|2014-12-16|Method for copying data in reprogrammable non-volatile memory
EP0722585B1|2002-05-22|Flash memory with reduced erasing and overwriting
US7549012B2|2009-06-16|Memory device with sector pointer structure
US6532556B1|2003-03-11|Data management for multi-bit-per-cell memories
同族专利:
公开号 | 公开日
EP2240937B1|2016-06-15|
US8301912B2|2012-10-30|
TW200935420A|2009-08-16|
EP2240937A4|2011-04-20|
USRE45697E1|2015-09-29|
EP2240937A1|2010-10-20|
US20090204824A1|2009-08-13|
KR20100121472A|2010-11-17|
KR101587464B1|2016-01-21|
WO2009088920A1|2009-07-16|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US5619576A|1994-03-14|1997-04-08|Shaw; William Y.|Variable-key cryptography system|
JPH09258977A|1996-01-17|1997-10-03|Fuji Xerox Co Ltd|ソフトウェアの保護機能付き情報処理装置|
JP2005039864A|1996-01-17|2005-02-10|Fuji Xerox Co Ltd|ソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法|
JP2005094790A|1996-01-17|2005-04-07|Fuji Xerox Co Ltd|ソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法|
US20050144365A1|2003-12-30|2005-06-30|Sergey Anatolievich Gorobets|Non-volatile memory and method with control data management|
JP2007517333A|2003-12-30|2007-06-28|サンディスクコーポレイション|不揮発性メモリおよび制御データ管理を伴う方法|
JP2006228407A|2005-01-19|2006-08-31|Saifun Semiconductors Ltd|固定パターンプログラミングを防止するための方法|JP2010231778A|2009-03-04|2010-10-14|Apple Inc|不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング|
JP2012169034A|2007-09-07|2012-09-06|Sandisk Corp|ページ内・ページ間オンチップデータ擬似ランダム化のための不揮発性メモリおよび方法|
JP2013020620A|2011-07-08|2013-01-31|Samsung Electronics Co Ltd|メモリコントローラ及びその動作方法、並びにメモリコントローラを含むメモリシステム、3次元メモリシステム、メモリカード、ソリッドステートドライブ、及び携帯用通信装置|
WO2015022741A1|2013-08-15|2015-02-19|ルネサスエレクトロニクス株式会社|半導体装置|US5592436A|1992-08-28|1997-01-07|Kabushiki Kaisha Toshiba|Data transfer system|
JP3080829B2|1994-02-17|2000-08-28|株式会社東芝|カスケード型メモリセル構造を有した多バンクシンクロナスメモリシステム|
JP3781793B2|1995-01-10|2006-05-31|株式会社ルネサステクノロジ|ダイナミック型半導体記憶装置|
JP3749347B2|1997-04-24|2006-02-22|富士通株式会社|データ取り込み方法、データ取り込み回路、及び、ieee1394用プロトコルコントローラ|
US5909449A|1997-09-08|1999-06-01|Invox Technology|Multibit-per-cell non-volatile memory with error detection and correction|
US5943283A|1997-12-05|1999-08-24|Invox Technology|Address scrambling in a semiconductor memory|
US6094368A|1999-03-04|2000-07-25|Invox Technology|Auto-tracking write and read processes for multi-bit-per-cell non-volatile memories|
GB0000738D0|2000-01-13|2000-03-08|Element 14 Inc|Decoder circuit|
US6856572B2|2000-04-28|2005-02-15|Matrix Semiconductor, Inc.|Multi-headed decoder structure utilizing memory array line driver with dual purpose driver device|
US6684289B1|2000-11-22|2004-01-27|Sandisk Corporation|Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory|
US6549468B2|2001-08-30|2003-04-15|Micron Technology, Inc.|Non-volatile memory with address descrambling|
GB0123417D0|2001-09-28|2001-11-21|Memquest Ltd|Improved data processing|
US6621745B1|2002-06-18|2003-09-16|Atmel Corporation|Row decoder circuit for use in programming a memory device|
US6879530B2|2002-07-18|2005-04-12|Micron Technology, Inc.|Apparatus for dynamically repairing a semiconductor memory|
US6917539B2|2002-08-02|2005-07-12|Unity Semiconductor Corporation|High-density NVRAM|
US6879505B2|2003-03-31|2005-04-12|Matrix Semiconductor, Inc.|Word line arrangement having multi-layer word line segments for three-dimensional memory array|
US7012835B2|2003-10-03|2006-03-14|Sandisk Corporation|Flash memory data correction and scrub techniques|
US7310347B2|2004-03-14|2007-12-18|Sandisk, Il Ltd.|States encoding in multi-bit flash cells|
US20050213393A1|2004-03-14|2005-09-29|M-Systems Flash Disk Pioneers, Ltd.|States encoding in multi-bit flash cells for optimizing error rate|
US7512813B2|2004-05-28|2009-03-31|International Business Machines Corporation|Method for system level protection of field programmable logic devices|
US7386700B2|2004-07-30|2008-06-10|Sandisk Il Ltd|Virtual-to-physical address translation in a flash file system|
US7849381B2|2004-12-21|2010-12-07|Sandisk Corporation|Method for copying data in reprogrammable non-volatile memory|
US8341371B2|2005-01-31|2012-12-25|Sandisk Il Ltd|Method of managing copy operations in flash memories|
EP1851771A2|2005-02-11|2007-11-07|M-Systems Flash Disk Pioneers Ltd.|Nand flash memory system architecture|
JP2007035169A|2005-07-27|2007-02-08|Matsushita Electric Ind Co Ltd|半導体記憶装置|
US7681109B2|2005-10-13|2010-03-16|Ramot At Tel Aviv University Ltd.|Method of error correction in MBC flash memory|
US7844877B2|2005-11-15|2010-11-30|Ramot At Tel Aviv University Ltd.|Method and device for multi phase error-correction|
KR20080081190A|2005-12-23|2008-09-08|코닌클리케 필립스 일렉트로닉스 엔.브이.|데이터 스트림 처리 장치 및 방법|
US7388781B2|2006-03-06|2008-06-17|Sandisk Il Ltd.|Multi-bit-per-cell flash memory device with non-bijective mapping|
JP2007251783A|2006-03-17|2007-09-27|Nec Electronics Corp|半導体装置の被処理データのスクランブル/デスクランブル方法、そのプログラム、スクランブル/デスクランブル回路、及びそれらを備える半導体装置|
US7464216B2|2006-09-29|2008-12-09|Sandisk Corporation|Method for phased garbage collection with state indicators|
US8127200B2|2006-12-24|2012-02-28|Sandisk Il Ltd.|Flash memory device and system with randomizing for suppressing errors|
US8370561B2|2006-12-24|2013-02-05|Sandisk Il Ltd.|Randomizing for suppressing errors in a flash memory|
US7984360B2|2006-12-31|2011-07-19|Ramot At Tel Aviv University Ltd.|Avoiding errors in a flash memory by using substitution transformations|
US7873803B2|2007-09-25|2011-01-18|Sandisk Corporation|Nonvolatile memory with self recovery|
US7953930B2|2007-12-07|2011-05-31|Sandisk Corporation|Device identifiers for nonvolatile memory modules|
US8187936B2|2010-06-30|2012-05-29|SanDisk Technologies, Inc.|Ultrahigh density vertical NAND memory device and method of making thereof|WO2007132452A2|2006-05-12|2007-11-22|Anobit Technologies|Reducing programming error in memory devices|
KR101375955B1|2006-05-12|2014-03-18|애플 인크.|메모리 디바이스 내의 왜곡 추정 및 상쇄|
US8151166B2|2007-01-24|2012-04-03|Anobit Technologies Ltd.|Reduction of back pattern dependency effects in memory devices|
WO2007132457A2|2006-05-12|2007-11-22|Anobit Technologies Ltd.|Combined distortion estimation and error correction coding for memory devices|
WO2007132456A2|2006-05-12|2007-11-22|Anobit Technologies Ltd.|Memory device with adaptive capacity|
WO2008026203A2|2006-08-27|2008-03-06|Anobit Technologies|Estimation of non-linear distortion in memory devices|
CN101601094B|2006-10-30|2013-03-27|苹果公司|使用多个门限读取存储单元的方法|
US7975192B2|2006-10-30|2011-07-05|Anobit Technologies Ltd.|Reading memory cells using multiple thresholds|
US7924648B2|2006-11-28|2011-04-12|Anobit Technologies Ltd.|Memory power and performance management|
WO2008068747A2|2006-12-03|2008-06-12|Anobit Technologies Ltd.|Automatic defect management in memory devices|
US7706182B2|2006-12-03|2010-04-27|Anobit Technologies Ltd.|Adaptive programming of analog memory cells using statistical characteristics|
US7900102B2|2006-12-17|2011-03-01|Anobit Technologies Ltd.|High-speed programming of memory devices|
US7751240B2|2007-01-24|2010-07-06|Anobit Technologies Ltd.|Memory device with negative thresholds|
CN101715595A|2007-03-12|2010-05-26|爱诺彼得技术有限责任公司|存储器单元读取阈的自适应估计|
US8001320B2|2007-04-22|2011-08-16|Anobit Technologies Ltd.|Command interface for memory devices|
WO2008139441A2|2007-05-12|2008-11-20|Anobit Technologies Ltd.|Memory device with internal signal processing unit|
US8234545B2|2007-05-12|2012-07-31|Apple Inc.|Data storage with incremental redundancy|
US7925936B1|2007-07-13|2011-04-12|Anobit Technologies Ltd.|Memory device with non-uniform programming levels|
CN101765846B|2007-08-01|2013-10-23|Nxp股份有限公司|用于禁用应用程序的移动通信设备和方法|
US8259497B2|2007-08-06|2012-09-04|Apple Inc.|Programming schemes for multi-level analog memory cells|
US8174905B2|2007-09-19|2012-05-08|Anobit Technologies Ltd.|Programming orders for reducing distortion in arrays of multi-level analog memory cells|
US8848913B2|2007-10-04|2014-09-30|Qualcomm Incorporated|Scrambling sequence generation in a communication system|
US7773413B2|2007-10-08|2010-08-10|Anobit Technologies Ltd.|Reliable data storage in analog memory cells in the presence of temperature variations|
US8000141B1|2007-10-19|2011-08-16|Anobit Technologies Ltd.|Compensation for voltage drifts in analog memory cells|
WO2009050703A2|2007-10-19|2009-04-23|Anobit Technologies|Data storage in analog memory cell arrays having erase failures|
US8068360B2|2007-10-19|2011-11-29|Anobit Technologies Ltd.|Reading analog memory cells using built-in multi-threshold commands|
WO2009063450A2|2007-11-13|2009-05-22|Anobit Technologies|Optimized selection of memory units in multi-unit memory devices|
US8225181B2|2007-11-30|2012-07-17|Apple Inc.|Efficient re-read operations from memory devices|
US8209588B2|2007-12-12|2012-06-26|Anobit Technologies Ltd.|Efficient interference cancellation in analog memory cell arrays|
US8456905B2|2007-12-16|2013-06-04|Apple Inc.|Efficient data storage in multi-plane memory devices|
US8085586B2|2007-12-27|2011-12-27|Anobit Technologies Ltd.|Wear level estimation in analog memory cells|
US8787181B2|2008-01-14|2014-07-22|Qualcomm Incorporated|Resource allocation randomization|
US8156398B2|2008-02-05|2012-04-10|Anobit Technologies Ltd.|Parameter estimation based on error correction code parity check equations|
US7924587B2|2008-02-21|2011-04-12|Anobit Technologies Ltd.|Programming of analog memory cells using a single programming pulse per state transition|
US7864573B2|2008-02-24|2011-01-04|Anobit Technologies Ltd.|Programming analog memory cells for reduced variance after retention|
US8230300B2|2008-03-07|2012-07-24|Apple Inc.|Efficient readout from analog memory cells using data compression|
US8400858B2|2008-03-18|2013-03-19|Apple Inc.|Memory device with reduced sense time readout|
US8059457B2|2008-03-18|2011-11-15|Anobit Technologies Ltd.|Memory device with multiple-accuracy read commands|
US8923249B2|2008-03-26|2014-12-30|Qualcomm Incorporated|Method and apparatus for scrambling sequence generation in a communication system|
US9594679B2|2008-05-01|2017-03-14|Sandisk Il Ltd.|Flash cache flushing method and system|
US8059455B2|2008-05-09|2011-11-15|Sandisk Il Ltd.|Partial scrambling to reduce correlation|
US8154918B2|2008-06-30|2012-04-10|Sandisk Il Ltd.|Method for page- and block based scrambling in non-volatile memory|
US7924613B1|2008-08-05|2011-04-12|Anobit Technologies Ltd.|Data storage in analog memory cells with protection against programming interruption|
US7995388B1|2008-08-05|2011-08-09|Anobit Technologies Ltd.|Data storage using modified voltages|
US8949684B1|2008-09-02|2015-02-03|Apple Inc.|Segmented data storage|
US8169825B1|2008-09-02|2012-05-01|Anobit Technologies Ltd.|Reliable data storage in analog memory cells subjected to long retention periods|
US8145855B2|2008-09-12|2012-03-27|Sandisk Technologies Inc.|Built in on-chip data scrambler for non-volatile memory|
US8429330B2|2008-09-12|2013-04-23|Sandisk Technologies Inc.|Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations|
US8482978B1|2008-09-14|2013-07-09|Apple Inc.|Estimation of memory cell read thresholds by sampling inside programming level distribution intervals|
US8000135B1|2008-09-14|2011-08-16|Anobit Technologies Ltd.|Estimation of memory cell read thresholds by sampling inside programming level distribution intervals|
US8239734B1|2008-10-15|2012-08-07|Apple Inc.|Efficient data storage in storage device arrays|
US8261159B1|2008-10-30|2012-09-04|Apple, Inc.|Data scrambling schemes for memory devices|
US8208304B2|2008-11-16|2012-06-26|Anobit Technologies Ltd.|Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N|
US8248831B2|2008-12-31|2012-08-21|Apple Inc.|Rejuvenation of analog memory cells|
US8397131B1|2008-12-31|2013-03-12|Apple Inc.|Efficient readout schemes for analog memory cell devices|
US8924661B1|2009-01-18|2014-12-30|Apple Inc.|Memory system including a controller and processors associated with memory devices|
US8228701B2|2009-03-01|2012-07-24|Apple Inc.|Selective activation of programming schemes in analog memory cell arrays|
KR20100099961A|2009-03-04|2010-09-15|삼성전자주식회사|불휘발성 메모리 장치 및 그 동작 방법|
US8259506B1|2009-03-25|2012-09-04|Apple Inc.|Database of memory read thresholds|
US8832354B2|2009-03-25|2014-09-09|Apple Inc.|Use of host system resources by memory controller|
US8238157B1|2009-04-12|2012-08-07|Apple Inc.|Selective re-programming of analog memory cells|
US8479080B1|2009-07-12|2013-07-02|Apple Inc.|Adaptive over-provisioning in memory systems|
KR101824227B1|2009-08-07|2018-02-05|삼성전자주식회사|메모리 시스템 및 그것의 프로그램 방법|
US8495465B1|2009-10-15|2013-07-23|Apple Inc.|Error correction coding over multiple memory pages|
KR20110055178A|2009-11-19|2011-05-25|삼성전자주식회사|플래시 메모리 장치 및 그것을 포함한 메모리 시스템|
WO2011064883A1|2009-11-27|2011-06-03|株式会社東芝|メモリチップ|
US8677054B1|2009-12-16|2014-03-18|Apple Inc.|Memory management schemes for non-volatile memory devices|
US8443263B2|2009-12-30|2013-05-14|Sandisk Technologies Inc.|Method and controller for performing a copy-back operation|
US8595411B2|2009-12-30|2013-11-26|Sandisk Technologies Inc.|Method and controller for performing a sequence of commands|
US8694814B1|2010-01-10|2014-04-08|Apple Inc.|Reuse of host hibernation storage space by memory controller|
US8572311B1|2010-01-11|2013-10-29|Apple Inc.|Redundant data storage in multi-die memory systems|
US8578242B1|2010-01-29|2013-11-05|Western Digital Technologies, Inc.|Data storage device employing seed array for data path protection|
US8694853B1|2010-05-04|2014-04-08|Apple Inc.|Read commands for reading interfering memory cells|
GB201008888D0|2010-05-27|2010-07-14|Qinetiq Ltd|Network security|
US8572423B1|2010-06-22|2013-10-29|Apple Inc.|Reducing peak current in memory systems|
US8560825B2|2010-06-30|2013-10-15|International Business Machines Corporation|Streaming virtual machine boot services over a network|
TWI455136B|2010-07-01|2014-10-01|Silicon Motion Inc|用來進行資料整形之方法以及相關之記憶裝置及其控制器|
US8595591B1|2010-07-11|2013-11-26|Apple Inc.|Interference-aware assignment of programming levels in analog memory cells|
US9104580B1|2010-07-27|2015-08-11|Apple Inc.|Cache memory for hybrid disk drives|
US8645794B1|2010-07-31|2014-02-04|Apple Inc.|Data storage in analog memory cells using a non-integer number of bits per cell|
US8856475B1|2010-08-01|2014-10-07|Apple Inc.|Efficient selection of memory blocks for compaction|
US8694854B1|2010-08-17|2014-04-08|Apple Inc.|Read threshold setting based on soft readout statistics|
US8417877B2|2010-08-31|2013-04-09|Micron Technology, Inc|Stripe-based non-volatile multilevel memory operation|
US9021181B1|2010-09-27|2015-04-28|Apple Inc.|Memory management for unifying memory cell conditions by using maximum time intervals|
GB2486635B|2010-12-14|2016-12-14|StmicroelectronicsLtd|Detecting key corruption|
US8751729B2|2010-12-23|2014-06-10|Samsung Electronics Co., Ltd.|Flash memory device and memory system including the same|
CN102566937A|2010-12-30|2012-07-11|慧荣科技股份有限公司|快闪存储装置及其运作方法|
US8819328B2|2010-12-30|2014-08-26|Sandisk Technologies Inc.|Controller and method for performing background operations|
WO2012117263A1|2011-03-02|2012-09-07|Sandisk Il Ltd.|Method of data storage in non-volatile memory|
KR20120125790A|2011-05-09|2012-11-19|삼성전자주식회사|메모리 장치 및 그것을 포함하는 메모리 시스템|
US8843693B2|2011-05-17|2014-09-23|SanDisk Technologies, Inc.|Non-volatile memory and method with improved data scrambling|
US8694719B2|2011-06-24|2014-04-08|Sandisk Technologies Inc.|Controller, storage device, and method for power throttling memory operations|
KR20130009392A|2011-07-15|2013-01-23|삼성전자주식회사|컨트롤러의 동작 방법과 상기 컨트롤러를 포함하는 메모리 시스템|
US8762626B2|2011-09-12|2014-06-24|Sandisk Technologies Inc.|Data modification based on matching bit patterns|
US8666068B2|2011-10-20|2014-03-04|Sandisk Technologies Inc.|Method for scrambling shaped data|
CN103065678B|2011-10-21|2016-01-13|点序科技股份有限公司|闪速存储器装置及其数据储存方法|
KR20130052971A|2011-11-14|2013-05-23|삼성전자주식회사|비휘발성 메모리 장치의 동작 방법|
US9251900B2|2011-11-15|2016-02-02|Sandisk Technologies Inc.|Data scrambling based on transition characteristic of the data|
KR101811298B1|2011-12-28|2017-12-27|삼성전자주식회사|랜덤마이져로 씨드를 제공하는 씨드 컨트롤러 및 그것을 포함한 메모리 컨트롤러|
KR101959567B1|2012-05-14|2019-03-18|에스케이하이닉스 주식회사|비휘발성 메모리 장치 및 비휘발성 메모리 장치의 프로그램 방법|
US9459955B2|2012-05-24|2016-10-04|Sandisk Technologies Llc|System and method to scramble data based on a scramble key|
TWI474256B|2012-06-21|2015-02-21|Etron Technology Inc|產生雜亂值的系統和產生雜亂值的方法|
KR20140027596A|2012-07-24|2014-03-07|삼성전자주식회사|메모리 시스템 및 메모리 시스템에서의 암호화 방법|
US9171620B2|2012-11-29|2015-10-27|Sandisk Technologies Inc.|Weighted read scrub for nonvolatile memory|
US9098205B2|2013-01-30|2015-08-04|Sandisk Technologies Inc.|Data randomization in 3-D memory|
US9400721B2|2013-03-11|2016-07-26|Seagate Technology Llc|Error correction code seeding|
US9262264B2|2013-03-11|2016-02-16|Seagate Technology Llc|Error correction code seeding|
JP2014206967A|2013-03-18|2014-10-30|株式会社Genusion|記憶装置|
US9230656B2|2013-06-26|2016-01-05|Sandisk Technologies Inc.|System for maintaining back gate threshold voltage in three dimensional NAND memory|
US20150046772A1|2013-08-06|2015-02-12|Sandisk Technologies Inc.|Method and device for error correcting codeerror handling|
US9274880B1|2013-08-09|2016-03-01|Altera Corporation|Methods and apparatus for detecting and correcting errors in high-speed serial communications systems|
US9240238B2|2013-09-20|2016-01-19|Sandisk Technologies Inc.|Back gate operation with elevated threshold voltage|
US20150121156A1|2013-10-28|2015-04-30|Sandisk Technologies Inc.|Block Structure Profiling in Three Dimensional Memory|
KR20150064799A|2013-12-03|2015-06-12|에스케이하이닉스 주식회사|랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템|
US9361106B2|2013-12-27|2016-06-07|Intel Corporation|SMS4 acceleration processors, methods, systems, and instructions|
US20150199282A1|2014-01-16|2015-07-16|Storart Technology Co., Ltd.|Scramble random seed prediction method with storage device built-in data copy back procedure|
US9336401B2|2014-01-20|2016-05-10|International Business Machines Corporation|Implementing enhanced security with storing data in DRAMs|
CN103777904B|2014-02-12|2017-07-21|威盛电子股份有限公司|数据储存装置以及数据加扰与解扰方法|
KR20150107244A|2014-03-13|2015-09-23|삼성전자주식회사|논리 정보와 물리 정보를 이용하여 데이터를 처리할 수 있는 장치와 방법|
US9230689B2|2014-03-17|2016-01-05|Sandisk Technologies Inc.|Finding read disturbs on non-volatile memories|
GB2524561A|2014-03-27|2015-09-30|St Microelectronics Res & Dev|Methods and apparatus for storing content|
US8918577B1|2014-06-13|2014-12-23|Sandisk Technologies Inc.|Three dimensional nonvolatile memory with variable block capacity|
US9513913B2|2014-07-22|2016-12-06|Intel Corporation|SM4 acceleration processors, methods, systems, and instructions|
US9678832B2|2014-09-18|2017-06-13|Sandisk Technologies Llc|Storage module and method for on-chip copy gather|
US9467279B2|2014-09-26|2016-10-11|Intel Corporation|Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality|
US9841910B2|2014-09-30|2017-12-12|Sandisk Technologies Llc|Moving and committing valid data on a set-by-set basis|
JP5940704B1|2015-03-26|2016-06-29|ウィンボンド エレクトロニクス コーポレーション|半導体記憶装置|
US10102146B2|2015-03-26|2018-10-16|SK Hynix Inc.|Memory system and operating method for improving rebuild efficiency|
KR20160127525A|2015-04-27|2016-11-04|에스케이하이닉스 주식회사|메모리 시스템 및 메모리 시스템의 동작 방법|
US9720612B2|2015-04-30|2017-08-01|Sandisk Technologies Llc|Biasing schemes for storage of bits in unreliable storage locations|
US9780809B2|2015-04-30|2017-10-03|Sandisk Technologies Llc|Tracking and use of tracked bit values for encoding and decoding data in unreliable memory|
US9692598B2|2015-08-07|2017-06-27|Terry L. Davis|Multi-use long string authentication keys|
KR20170108307A|2016-03-17|2017-09-27|삼성전자주식회사|비휘발성 메모리 장치 및 그 동작 방법|
KR20170128686A|2016-05-12|2017-11-23|삼성전자주식회사|불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법|
US10175949B2|2016-09-06|2019-01-08|Arizona Board Of Regents Acting For And On Behalf Of Northern Arizona University|Data compiler for true random number generation and related methods|
TWI631460B|2017-05-19|2018-08-01|群聯電子股份有限公司|資料讀取方法、記憶體控制電路單元與記憶體儲存裝置|
US10698839B2|2017-12-12|2020-06-30|Western Digital Technologies, Inc.|Seed scrambling|
US10635400B2|2017-12-12|2020-04-28|Western Digital Technologies, Inc.|Seed generation|
JP2019153367A|2018-03-06|2019-09-12|株式会社東芝|磁気ディスク装置および記録方法|
法律状态:
2011-12-15| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111214 |
2011-12-22| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111221 |
2012-06-16| A711| Notification of change in applicant|Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120615 |
2013-02-06| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130205 |
2013-05-03| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130502 |
2013-05-14| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130513 |
2013-09-11| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130910 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]